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