pganalyze / pg_query.rs

Rust library to parse, deparse and normalize SQL queries using the PostgreSQL query parser
MIT License
126 stars 12 forks source link

Add support for getting filter columns for a parsed query #21

Closed lfittl closed 8 months ago

lfittl commented 1 year ago

This works the same as the "#filter_columns" method in the pg_query Ruby gem, and returns the table name (if present) and column name for every column that's referenced in a JOIN or WHERE clause.

To support this functionality, the nodes() and nodes_mut() functions gain a 4th value for each result item, indicating whether the current node can be considered a filter column. This is intended to be used when matching a ColumnRef node, to determine whether it is part of a WHERE/JOIN clause, or part of something else (e.g. target list, or ORDER BY, etc).