跳到主要内容

TimescaleDB 辅助函数

连接

函数参数返回值
timescaledb_connect(connstr, pool_size)connstr: PostgreSQL 连接字符串 (例如 "host=localhost port=5432 dbname=iotsensors user=postgres password=secret sslmode=disable"), pool_size (可选): 最大连接数 (默认 5, 最小 1)(success, error_msg) — 布尔值 + 字符串|nil
timescaledb_disconnect()(success, error_msg) — 布尔值 + 字符串|nil

不支持 TLS;请使用 sslmode=disable。连接在所有钩子中保持持久。

同步操作

阻塞直到确认。失败时引发 Lua 错误 — 使用 pcall() 进行错误处理。

函数参数返回值
timescaledb_execute(sql, params)sql: 带有 $1, $2 占位符的 SQL, params (可选): 值数组 (字符串/数值/布尔值/nil)rows_affected (数值)
timescaledb_insert(table_name, columns, values)table_name: 字符串, columns: 列名数组, values: 匹配列的值数组rows_affected (数值)
timescaledb_insert_batch(table_name, columns, rows)table_name: 字符串, columns: 列名数组, rows: 行数组的数组rows_affected (数值)

参数限制:最多 65,535 个绑定参数。对于批量操作:columns × rows 不得超过 65,535。

异步操作

触发后即忘。错误在内部记录日志,从不引发 Lua 错误。

函数参数返回值
timescaledb_execute_async(sql, params)timescaledb_execute 相同如果已加入队列返回 true,如果验证失败返回 false
timescaledb_insert_async(table_name, columns, values)timescaledb_insert 相同如果已加入队列返回 true,如果验证失败返回 false
timescaledb_insert_batch_async(table_name, columns, rows)timescaledb_insert_batch 相同如果已加入队列返回 true,如果验证失败返回 false

数据类型映射

Lua 类型PostgreSQL 类型
nil任何类型 (作为 NULL)
stringTEXT, VARCHAR, CHAR, BPCHAR, NAME
number (整数)INT2, INT4, INT8, NUMERIC (进行范围检查)
number (浮点数)FLOAT4, FLOAT8, NUMERIC (针对 FLOAT4 进行范围检查)
booleanBOOL