Releases: cwida/lpts
Releases · cwida/lpts
LPTS 0.9.0
Changelog
0.9.0 - 2026-05-29
This is the first release-candidate-quality LPTS milestone. It is intended to
stabilize the public DuckDB extension surface before a future 1.0.0 API
stability release.
Compatibility
- DuckDB target:
v1.5.3 - extension-ci-tools target:
v1.5-variegata - Release tag:
v0.9.0
Public API
PRAGMA lpts('query')returns generated CTE SQL.lpts_query('query')returns generated CTE SQL as a table function.PRAGMA lpts_exec('query')executes the generated SQL.PRAGMA lpts_check('query')compares the original query and generated SQL with bag equality.PRAGMA print_ast('query')prints the LPTS AST tree.print_ast_query('query')returns the AST tree as a table function.lpts_normalize_query('query')returns input-dialect SQL normalized to DuckDB SQL.
Settings
lpts_dialect: output dialect for generated SQL.lpts_input_dialect: input dialect to normalize before DuckDB parses and plans the query.
Supported dialect values: duckdb, postgres/postgresql, spark, hive,
trino, presto, snowflake, bigquery/bq, redshift, mysql, and
mariadb.
Highlights
- Converts DuckDB optimized logical plans into readable CTE SQL.
- Supports AST inspection through
print_astandprint_ast_query. - Supports round-trip validation through
lpts_check. - Supports input dialect normalization for common SQL syntax differences.
- Supports output dialect rendering for common warehouse and lakehouse engines.
- Exposes function descriptions and examples through
duckdb_functions(). - Includes a SQLStorm TPC-H benchmark runner.
Validation
- Local SQLLogicTest suite:
2890assertions passed in66test cases. - SQLStorm TPC-H
sf=0.001baseline:- Total queries:
17036 - Strict successes:
15833 - Nondeterministic:
387 - DuckDB errors:
807 - LPTS timeouts:
4 - DuckDB timeouts:
5
- Total queries:
- SQLStorm TPC-H
sf=0.0001baseline:- Total queries:
17036 - Strict successes:
15646 - Not implemented:
578 - DuckDB errors:
802 - Nondeterministic:
6 - Timeouts:
4
- Total queries:
The preferred SQLStorm baseline for this release is sf=0.001, because it
reflects the latest stronger LPTS coverage.
Known Caveats
- LPTS serializes DuckDB's optimized logical plan, not the original SQL text or formatting.
lpts_checkcan fail for nondeterministic queries, such as queries without a fully specified output order.- Input dialect support is normalization for common syntax, not a full SQLGlot/Coral-style parser stack.
- Some SQLStorm failures are DuckDB-side errors, timeouts, or scale-factor-dependent optimizer behavior.