From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Avoid premature de-doubling of quote marks in ECPG strings. |
Date: | 2020-10-22 22:30:10 |
Message-ID: | E1kVj62-0004Pj-4G@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Avoid premature de-doubling of quote marks in ECPG strings.
If you write the literal 'abc''def' in an EXEC SQL command, that will
come out the other end as 'abc'def', triggering a syntax error in the
backend. Likewise, "abc""def" is reduced to "abc"def" which is wrong
syntax for a quoted identifier.
The cause is that the lexer thinks it should emit just one quote
mark, whereas what it really should do is keep the string as-is.
Add some docs and test cases, too.
Although this seems clearly a bug, I fear users wouldn't appreciate
changing it in minor releases. Some may well be working around it
by applying an extra doubling of affected quotes, as for example
sql/dyntest.pgc has been doing.
Per investigation of a report from 1250kv, although this isn't
exactly what he/she was on about.
Discussion: https://postgr.es/m/673825.1603223178@sss.pgh.pa.us
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/3dfb1942d9b8748b93094a430289e2f7f3b3ae0d
Modified Files
--------------
doc/src/sgml/ecpg.sgml | 17 ++++++++++++++---
src/interfaces/ecpg/preproc/pgc.l | 9 +++------
src/interfaces/ecpg/test/expected/preproc-strings.c | 2 +-
.../ecpg/test/expected/preproc-strings.stderr | 8 ++++----
.../ecpg/test/expected/preproc-strings.stdout | 2 +-
src/interfaces/ecpg/test/preproc/strings.pgc | 8 ++++----
src/interfaces/ecpg/test/sql/dyntest.pgc | 2 +-
7 files changed, 28 insertions(+), 20 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2020-10-23 01:25:03 | pgsql: Sync our copy of the timezone library with IANA release tzcode20 |
Previous Message | Robert Haas | 2020-10-22 22:15:26 | pgsql: Try to avoid a compiler warning about using fxid uninitialized. |