sqlfmt icon indicating copy to clipboard operation
sqlfmt copied to clipboard

Support Bracketed Literals (SQL Server)

Open jlkravitz opened this issue 2 years ago • 3 comments

Describe the bug When referencing a linked server in openquery in SQL Server, sqlfmt incorrectly formats linked server names that are in brackets (with uncommon characters). In my case, the name of the linked server is the server's IP address (xxx.xx.xxx.xx). It adds unnecessary spaces. The resulting SQL has a syntax error and does not run.

To Reproduce

select * from openquery([123.23.54], 'select * from my_table')

Expected behavior

select * from openquery([123.23.54], 'select * from my_table')

Actual behavior

select * from openquery([123.23 .54], 'select * from my_table')

Additional context What is the output of sqlfmt --version?

sqlfmt, version 0.19.2

jlkravitz avatar Oct 26 '23 17:10 jlkravitz

Thanks for the report.

SQL Server uses brackets in a unique way (compared to all other databases/warehouses). To support this we would need to create a new SQL Server-specific dialect that treats brackets like quotes. I'm unlikely to get that done any time soon, but PRs are welcome!

tconbeer avatar Oct 26 '23 20:10 tconbeer

Got it. Your comment has made me explore, and I found out I can wrap the name in double-quotes instead of brackets. sqlfmt then works like a charm!

jlkravitz avatar Oct 26 '23 20:10 jlkravitz