public inbox for [email protected]
help / color / mirror / Atom feedpgsql: Use a safer outfuncs/readfuncs representation for BitStrings.
2+ messages / 1 participants
[nested] [flat]
* pgsql: Use a safer outfuncs/readfuncs representation for BitStrings.
@ 2024-02-13 17:19 Tom Lane <[email protected]>
0 siblings, 0 replies; 2+ messages in thread
From: Tom Lane @ 2024-02-13 17:19 UTC (permalink / raw)
To: [email protected]
Use a safer outfuncs/readfuncs representation for BitStrings.
For a long time, our outfuncs.c code has supposed that the string
contents of a BitString node could just be printed literally with
no concern for quoting/escaping. Now, that's okay if the string
literal contains only valid binary or hex digits ... but our lexer
doesn't check that, preferring to let bitin() be the sole authority
on what's valid. So we could have raw parse trees that contain
incorrect BitString literals, and that can result in failures when
WRITE_READ_PARSE_PLAN_TREES debugging is enabled.
Fix by using outToken() to print the string field, and debackslash()
to read it. This results in a change in the emitted representation
only in cases that would have failed before, and don't represent valid
SQL in the first place. Between that and the fact that we don't store
raw parse trees in the catalogs, I judge this safe to apply without a
catversion bump.
Per bug #18340 from Alexander Lakhin. Back-patch to v16; before that,
we lacked readfuncs support for BitString nodes, so that the problem
was only cosmetic.
Discussion: https://postgr.es/m/[email protected]
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/0736a8ef6f0e108e3972750a58a4e42ba070b029
Modified Files
--------------
src/backend/nodes/outfuncs.c | 9 +++++++--
src/backend/nodes/read.c | 11 +++--------
src/test/regress/expected/bit.out | 17 +++++++++++++++++
src/test/regress/sql/bit.sql | 5 +++++
4 files changed, 32 insertions(+), 10 deletions(-)
^ permalink raw reply [nested|flat] 2+ messages in thread
* pgsql: Use a safer outfuncs/readfuncs representation for BitStrings.
@ 2024-02-13 17:19 Tom Lane <[email protected]>
0 siblings, 0 replies; 2+ messages in thread
From: Tom Lane @ 2024-02-13 17:19 UTC (permalink / raw)
To: [email protected]
Use a safer outfuncs/readfuncs representation for BitStrings.
For a long time, our outfuncs.c code has supposed that the string
contents of a BitString node could just be printed literally with
no concern for quoting/escaping. Now, that's okay if the string
literal contains only valid binary or hex digits ... but our lexer
doesn't check that, preferring to let bitin() be the sole authority
on what's valid. So we could have raw parse trees that contain
incorrect BitString literals, and that can result in failures when
WRITE_READ_PARSE_PLAN_TREES debugging is enabled.
Fix by using outToken() to print the string field, and debackslash()
to read it. This results in a change in the emitted representation
only in cases that would have failed before, and don't represent valid
SQL in the first place. Between that and the fact that we don't store
raw parse trees in the catalogs, I judge this safe to apply without a
catversion bump.
Per bug #18340 from Alexander Lakhin. Back-patch to v16; before that,
we lacked readfuncs support for BitString nodes, so that the problem
was only cosmetic.
Discussion: https://postgr.es/m/[email protected]
Branch
------
REL_16_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/f15d01cb5dbdc44276f82178759586023896a3b7
Modified Files
--------------
src/backend/nodes/outfuncs.c | 9 +++++++--
src/backend/nodes/read.c | 11 +++--------
src/test/regress/expected/bit.out | 17 +++++++++++++++++
src/test/regress/sql/bit.sql | 5 +++++
4 files changed, 32 insertions(+), 10 deletions(-)
^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2024-02-13 17:19 UTC | newest]
Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2024-02-13 17:19 pgsql: Use a safer outfuncs/readfuncs representation for BitStrings. Tom Lane <[email protected]>
2024-02-13 17:19 pgsql: Use a safer outfuncs/readfuncs representation for BitStrings. Tom Lane <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox