sql-formatter-org / sql-formatter

A whitespace formatter for different query languages
https://sql-formatter-org.github.io/sql-formatter/
MIT License
2.32k stars 398 forks source link

Failure on schema-qualified special `OPERATOR` in PostgreSQL #711

Open innermatrix opened 8 months ago

innermatrix commented 8 months ago

Describe the bug

echo "select 'a' operator(public.=) 'A';" | npx sql-formatter -l postgresql

Expected behavior

Useful output

Actual behavior

Failure

Usage

$ npx sql-formatter --version    
15.2.0

Yeah, this syntax is weird; unfortunately, it's generated by pg_dump in some cases, so my scripts that pipe schema dump through sql-formatter are failing.

nene commented 8 months ago

Thanks for reporting.

That's definitely a tricky bit of syntax to handle.

You might be interested in trying out prettier-plugin-sql-cst. It doesn't yet have a full PostgreSQL support, but it does handle the OPERATOR() syntax.

I can thing of several hacks to fix this issue in sql-formatter. Will have to figure out which one would be the least hacky way of doing it.

innermatrix commented 8 months ago

Thanks; I am following that project and plan to switch to it when its Postgres support matures more, but for now here we are 🙂

nene commented 8 months ago

If you know of anything particular that's missing from the current PostgreSQL support in the prettier-plugin-sql-cst, feel free to let me know and I might prioritize that. It will take a while for it to support 100% of Postgres syntax, but most likely something like 10% of it is actually used by most people. But I don't know which 10% :)