Fazendo parse de consultas SQL (ou gerando uma parse tree)

Bibliotecas para parsing de SQLs do PostgreSQL

libpg_query

É a principal biblioteca, utiliza um pedaço do código fonte do próprio parser do PostgreSQL.

Linguagem: C

Git: https://github.com/pganalyze/libpg_query

pgsql-parser

Linguagem: NodeJS/Javascript.

É um wrapper NodeJS em cima do libpg_query escrito em C

NPM: https://www.npmjs.com/package/pgsql-deparser

pglast (antigo pg_query)

Linguagem: Python

É um wapper Python em cima do libpg_query escrito em C

Pypi pglast: https://pypi.org/project/pglast/
Pypi pgquery: https://pypi.org/project/pg_query/

Referências

Como o parse do PostgreSQL funciona?
https://dzone.com/articles/following-select-statement
https://www.cloudbees.com/blog/following-a-select-statement-through-postgres-internals

A query tree
https://www.postgresql.org/docs/current/querytree.html

O parser do PostgreSQL - uma apresentação
https://www.pgcon.org/2019/schedule/events/1310.en.html

pg_query
https://pganalyze.com/blog/pg-query-2-0-postgres-query-parser

beautify queryes com o postgresql
https://www.cybertec-postgresql.com/en/abusing-postgresql-as-an-sql-beautifier/

pgpool-II
https://wiki.postgresql.org/wiki/Query_Parsing#Using_Postgres_internals

Query parsing PostgreSQL
https://wiki.postgresql.org/wiki/Query_Parsing#Using_Postgres_internals

You should also read:

Fazendo Queries em JSON com Javascript

Queries são linguagens comuns em bancos de dados, seja SQL ou No-SQL. Existem bibliotecas que permitem fazer queries: JSONata JSONPath JSONata https://docs.jsonata.org/overview.html JSONPath.js…