Symisc UnQLite

An Embeddable NoSQL Database Engine

UnQLite C/C++ API Reference - Execute Jx9 Bytecode Program.


int unqlite_vm_exec(unqlite_vm *pVm);

Execute a compiled Jx9 program.


This routine is used to execute Jx9 bytecode program resulting from successful compilation of the target Jx9 script using one of the compile interfaces such as unqlite_compile() or unqlite_compile_file().

If no output consumer callback were installed, then the virtual machine will automatically redirect its output to an internal buffer. The caller can point to that buffer later when the VM have finished execution of the target program via a call to unqlite_vm_config() with a configuration verb set to UNQLITE_VM_CONFIG_EXTRACT_OUTPUT. But remember, for performance reason it's preferable to install a VM output consumer callback rather than waiting for the VM to finish executing and extracting the output.



A pointer to a unQLite Virtual Machine.

Return value

UNQLITE_OK is returned on success. Any other return value typically UNQLITE_CORRUPT indicates failure.


Compile this C file for a smart introduction to this interface.

#define JX9_PROG \
    "db_create('users'); /* Create the collection users */"\
    " /* Store something */ "\
    "db_store('users',{ 'name' : 'dean' , 'age' : 32 });"\
"db_store('users',{ 'name' : 'chems' , 'age' : 27 });"

unqlite *pDb;
unqlite_vm *pVm;

// Open our database;
rc = unqlite_open(&pDb,"test.db",UNQLITE_OPEN_CREATE);
if( rc != UNQLITE_OK ){ return; }

// Compile our Jx9 program
rc = unqlite_compile(pDb,JX9_PROG,sizeof(JX9_PROG)-1,&pVm);
if( rc != UNQLITE_OK ){ /* Extract error log here */
return; }

//Configure our VM ...

// Execute our Jx9 program
rc = unqlite_vm_exec(pVm);
if( rc != UNQLITE_OK ){ return; }

// Release our VM

//Auto-commit the transaction and close our handle

See also

unqlite_vm_release, unqlite_vm_config, unqlite_compile.

Symisc Systems
Copyright © Symisc Systems