快速入门
环境设置
要在 Lua 中使用用户自定义函数(UDF),首先需要设置一些环境变量:
LUA_PATH
:必须按照 Lua 文档中指定的 LUA_PATH
设置规则进行设置(请参阅 https://www.lua.org/pil/8.1.html)。例如:
LUA_PATH="?;?.lua;$MCO_ROOT/target/lua/?.lua"
LUA_CPATH
:Lua 搜索可加载的编译二进制模块的路径。它并非 SmartEDB 自身所需,但在使用第三方模块时可能需要用到。
LD_LIBRARY_PATH
:包含适当共享库模块的 SmartEDB 目录。例如:
LD_LIBRARY_PATH=$MCO_ROOT/target/bin.so
MCO_LUA_PATH:包含模块 exdb.lua
和 kdb.lua
的目录。例如:
MCO_LUA_PATH=$MCO_ROOT/target/lua
一旦环境设置完成,Lua 支持将自动加载,无需其他操作!
Lua 数据类型
Lua 的数据类型有限。下表展示了 SmartESQL 数据类型在 Lua 中的表示方式:
SmartESQL 数据类型 | Lua 数据类型 | 说明 |
---|---|---|
char(N), varchar(N) | String | |
TINYINT, SMALLINT, INT, INT(N), UNSIGNED(N), BIGINT | Number | Lua 语言不区分整数和浮点数。所有数值在内部都以 64 位双精度值的形式存储。 |
FLOAT, REAL, DOUBLE | Number | |
NUMERIC, DOUBLE | Number | 类型为 Numeric 的定点值在传递给用户定义函数(UDF)时会被转换为双精度浮点值。请注意,UDF 的返回类型不支持定点类型。 |
Date, time, timestamp | Number | 转换为整数值,与 os.time() 兼容。 |
Binary, varbinary, longvarbinary | String | |
REFERENCE | Not supported | |
BLOB | String | blob 不能用作用户定义函数(UDF)的返回值。 |
ARRAY | Table | 可以创建一个表并将其传递给用户定义函数(UDF),并且也可以返回一个表。 |
SEQUENCE | Userdata | 序列的“句柄”作为用户数据传递到用户定义函数(UDF)中。此句柄可在以下函数中使用:seqiter(it)、iseq()、iseqn() |