重现问题的代码:
PGExprParser parser = new PGExprParser("select '\\', '\\t', E'\\t'");
System.out.println(parser.primary());
System.out.println(parser.primary());
在 PostgreSQL 命令行中运行这条 SQL 的结果:
psql (11.11 (Debian 11.11-1.pgdg90+1))
Type "help" for help.
postgres=# select '\', '\t', E'\t';
?column? | ?column? | ?column?
----------+----------+----------
\ | \t |
(1 row)
如 PostgreSQL 文档中所说:
而 PGLexer 的 scanString 方法在对待普通字符串时也像对待 E 开头的 String Constants with C-style Escapes
一样试图转义 '' 导致出错。
暂无答案!
目前还没有任何答案,快来回答吧!