sql-formatter
sql-formatter copied to clipboard
Escape character + escaped double quote makes formatted SQL invalid
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 ?
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
-
S_CHAR_LITERAL
at https://github.com/manticore-projects/JSqlParser/blob/5e7732c870a66afff5b39214b2cfbb0409e12585/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt#L531 -
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.
is there any update on this issue?