Disallow "=" in names of reloptions and foreign-data options.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Jun 2025 19:22:44 +0000 (15:22 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Jun 2025 19:22:44 +0000 (15:22 -0400)
commite76097124f7d6679d287701ab108aa20088b13a6
tree6e4d427daf43371445f4dff4f095d706e0a49451
parentb898bb2a79ae1f2d54f3d21a22382059a2c2e40c
Disallow "=" in names of reloptions and foreign-data options.

We store values for these options as array elements with the syntax
"name=value", hence a name containing "=" confuses matters when
it's time to read the array back in.  Since validation of the
options is often done (long) after this conversion to array format,
that leads to confusing and off-point error messages.  We can
improve matters by rejecting names containing "=" up-front.

(Probably a better design would have involved pairs of array
elements, but it's too late now --- and anyway, there's no
evident use-case for option names like this.  We already
reject such names in some other contexts such as GUCs.)

Reported-by: Chapman Flack <jcflack@acm.org>
Author: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Chapman Flack <jcflack@acm.org>
Discussion: http://postgr.es/m/6830EB30.8090904@acm.org
Backpatch-through: 13
contrib/file_fdw/expected/file_fdw.out
contrib/file_fdw/sql/file_fdw.sql
src/backend/access/common/reloptions.c
src/backend/commands/foreigncmds.c