Lua scripts can be used as client code for eXtremeSQL A Lua script will typically include code to load the eXtremeDB module and initialize the runtime, create/load and connect a database, then execute SQL queries and retrieve a result set. For example:
First load the eXtremeDB module:
require ('exdb')Next load and initialize the eXtremeDB runtime. Note that this function call is made using braces "{}". This is Lua syntax for passing a table as a parameter to a function. For example:
initRuntime{disk=is_disk, debug=is_debug, shm=is_shm, tmgr=tmgr}Then create/load the database with a list of devices and specified parameters:
devices = { { type='conv', assignment= 'database', size = 64*1024*1024 } } dbparams = {ddl_dict_size=64*1024, max_classes=100, max_indexes=100} db = create("luadb", devices, dbparams)And connect to the database:
local c = connect(db)Now the script can perform queries and process result sets:
c:statement("create table t(i int)") print ("Inserting value") c:statement("insert into t values([1,2,3])") -- querying, cursor is a resut of the query local curs = c:query("select count(*) from t") -- traversing result set local elem = curs:next() while elem do for k,v in pairs(elem) do print(k,v) end elem = curs:next() end c:close() close(db) close(dbname) -- Explicitly free database memory with LUA GC devices[1].ptr = nilExample
The Lua SDK provides samples "
samples/lua/insert
" and "samples/lua/open
" which can be run from the associated command files. For example on a Windows system the following command filerun.bat
can be executed from the directorysampes/lua/insert
:set LUA_PATH=..\..\..\target\lua\exdb.lua set PATH=%PATH%;..\..\..\target\bin.so ..\..\..\target\bin\luajit insert.lua