Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 42 additions & 2 deletions extensions/parser_tools/description.yml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -10,7 +10,7 @@ extension:

repo:
github: zacMode/duckdb_extension_parser_tools
ref: 9818c41f1fb2d7ee65486216a1b4576e5b659df9
ref: 1d06e5c01d5ce65146b0739c2d257bca7caf2141

docs:
hello_world: |
Expand Down Expand Up @@ -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.
Expand Down
Loading