aboutsummaryrefslogtreecommitdiff
path: root/src/tutorial/funcs.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-02-13 12:18:25 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2024-02-13 12:18:25 -0500
commit0736a8ef6f0e108e3972750a58a4e42ba070b029 (patch)
treed34a1c7659df9c3b11af8cceec1468e05d1701d1 /src/tutorial/funcs.c
parentc1fc502f595bc843a603bddd267b249272de485f (diff)
downloadpostgresql-0736a8ef6f0e108e3972750a58a4e42ba070b029.tar.gz
postgresql-0736a8ef6f0e108e3972750a58a4e42ba070b029.zip
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/18340-4aa1ae6ed4121912@postgresql.org
Diffstat (limited to 'src/tutorial/funcs.c')
0 files changed, 0 insertions, 0 deletions