sql-formatter icon indicating copy to clipboard operation
sql-formatter copied to clipboard

Escape character + escaped double quote makes formatted SQL invalid

Open jzillmann opened this issue 2 years ago • 2 comments

In Postgres such a query is valid:

select A as "A\""B" from "T1";

The single result column will be named A\"B. The backslash escape isn't used as escape here, the first inner " will escape the following ". To demonstrate the logic a bit more a few examples:

  • A\B => A\B
  • A""B => A"B

Now the formatter chokes on this.

select A as "A\""B" from "T1";

will be formatted as

select A as "A\"" B " from " T1 ";

Which is not even executable anymore. Is there any configuration that could alleviate this problem ?

jzillmann avatar Oct 13 '22 15:10 jzillmann

Greetings.

With JSQLParser, your query parses just fine

SQL Text
 └─Statements: statement.select.PlainSelect
    ├─selectItems: statement.select.SelectItem
    │  ├─Column: a
    │  └─Alias:  AS "A\""B"
    └─Table: "T1"

@vertical-blank you may have a look at the Tokens

  1. S_CHAR_LITERAL at https://github.com/manticore-projects/JSqlParser/blob/5e7732c870a66afff5b39214b2cfbb0409e12585/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt#L531

  2. or S_QUOTED_IDENTIFIER at https://github.com/manticore-projects/JSqlParser/blob/5e7732c870a66afff5b39214b2cfbb0409e12585/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt#LL557C5-L557C24

for more complete Regular Expressions. It should be a copy'n paste option.

manticore-projects avatar May 29 '23 12:05 manticore-projects

is there any update on this issue?

philos1234 avatar Jun 15 '24 15:06 philos1234