diff --git a/extensions/parser_tools/description.yml b/extensions/parser_tools/description.yml index 813483b58..6dabdc22e 100644 --- a/extensions/parser_tools/description.yml +++ b/extensions/parser_tools/description.yml @@ -1,7 +1,7 @@ extension: name: parser_tools description: Exposes functions for parsing referenced tables and usage context from SQL queries using DuckDB's native parser. - version: 0.1.0 + version: 0.2.0 language: C++ build: cmake license: MIT @@ -10,7 +10,7 @@ extension: repo: github: zacMode/duckdb_extension_parser_tools - ref: 9818c41f1fb2d7ee65486216a1b4576e5b659df9 + ref: 1d06e5c01d5ce65146b0739c2d257bca7caf2141 docs: hello_world: | @@ -83,6 +83,46 @@ docs: │ WITH cte AS (SELECT 1) SELECT * FROM cte │ true │ └───────────────────────────────────────────────┴────────┘ + -- Extract WHERE conditions from a query + SELECT * FROM parse_where('SELECT * FROM MyTable WHERE time > 1 AND time < 100'); + ┌────────────────┬────────────┬─────────┐ + │ condition │ table_name │ context │ + │ varchar │ varchar │ varchar │ + ├────────────────┼────────────┼─────────┤ + │ ("time" > 1) │ MyTable │ WHERE │ + │ ("time" < 100) │ MyTable │ WHERE │ + └────────────────┴────────────┴─────────┘ + + -- Return detailed condition breakdown from a query + SELECT * FROM parse_where_detailed('SELECT * FROM MyTable WHERE time > 1 AND time < 100'); + ┌─────────────┬───────────────┬─────────┬────────────┬─────────┐ + │ column_name │ operator_type │ value │ table_name │ context │ + │ varchar │ varchar │ varchar │ varchar │ varchar │ + ├─────────────┼───────────────┼─────────┼────────────┼─────────┤ + │ time │ > │ 1 │ MyTable │ WHERE │ + │ time │ < │ 100 │ MyTable │ WHERE │ + └─────────────┴───────────────┴─────────┴────────────┴─────────┘ + + -- Parse a query with a BETWEEN condition + SELECT * FROM parse_where('SELECT * FROM MyTable WHERE time BETWEEN 1 AND 100'); + ┌────────────────────────────┬────────────┬─────────┐ + │ condition │ table_name │ context │ + │ varchar │ varchar │ varchar │ + ├────────────────────────────┼────────────┼─────────┤ + │ ("time" BETWEEN 1 AND 100) │ MyTable │ WHERE │ + └────────────────────────────┴────────────┴─────────┘ + + -- Detailed parsing of a BETWEEN condition + SELECT * FROM parse_where_detailed('SELECT * FROM MyTable WHERE time BETWEEN 1 AND 100'); + ┌─────────────┬───────────────┬─────────┬────────────┬─────────┐ + │ column_name │ operator_type │ value │ table_name │ context │ + │ varchar │ varchar │ varchar │ varchar │ varchar │ + ├─────────────┼───────────────┼─────────┼────────────┼─────────┤ + │ time │ >= │ 1 │ MyTable │ WHERE │ + │ time │ <= │ 100 │ MyTable │ WHERE │ + └─────────────┴───────────────┴─────────┴────────────┴─────────┘ + + extended_description: | `parser_tools` is a DuckDB extension that enables SQL query introspection using DuckDB’s native parser.