Skip to main content

TimescaleDB Helpers

Connection

FunctionParametersReturns
timescaledb_connect(connstr, pool_size)connstr: PostgreSQL connection string (e.g. "host=localhost port=5432 dbname=iotsensors user=postgres password=secret sslmode=disable"), pool_size (optional): max connections (default 5, min 1)(success, error_msg) — boolean + string|nil
timescaledb_disconnect()none(success, error_msg) — boolean + string|nil

TLS not supported; use sslmode=disable. Connection persists across all hooks.

Synchronous Operations

Block until confirmed. Raise Lua errors on failure — wrap in pcall() for error handling.

FunctionParametersReturns
timescaledb_execute(sql, params)sql: SQL with $1, $2 placeholders, params (optional): array of values (string/number/boolean/nil)rows_affected (number)
timescaledb_insert(table_name, columns, values)table_name: string, columns: array of column names, values: array of values matching columnsrows_affected (number)
timescaledb_insert_batch(table_name, columns, rows)table_name: string, columns: array of column names, rows: array of row arraysrows_affected (number)

Parameter limit: max 65,535 bind parameters. For batch: columns × rows must not exceed 65,535.

Asynchronous Operations

Fire-and-forget. Errors logged internally, never raise Lua errors.

FunctionParametersReturns
timescaledb_execute_async(sql, params)Same as timescaledb_executetrue if queued, false if validation failed
timescaledb_insert_async(table_name, columns, values)Same as timescaledb_inserttrue if queued, false if validation failed
timescaledb_insert_batch_async(table_name, columns, rows)Same as timescaledb_insert_batchtrue if queued, false if validation failed

Data Type Mapping

Lua TypePostgreSQL Types
nilAny (as NULL)
stringTEXT, VARCHAR, CHAR, BPCHAR, NAME
number (int)INT2, INT4, INT8, NUMERIC (range-checked)
number (float)FLOAT4, FLOAT8, NUMERIC (range-checked for FLOAT4)
booleanBOOL