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) |
string | TEXT, VARCHAR, CHAR, BPCHAR, NAME |
number (整数) | INT2, INT4, INT8, NUMERIC (进行范围检查) |
number (浮点数) | FLOAT4, FLOAT8, NUMERIC (针对 FLOAT4 进行范围检查) |
boolean | BOOL |