From: | Jim Jones <jim(dot)jones(at)uni-muenster(dot)de> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com>, Andrei Klychkov <andrew(dot)a(dot)klychkov(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: [PATCH] Fix ALTER SYSTEM empty string bug for GUC_LIST_QUOTE parameters |
Date: | 2025-09-06 14:44:30 |
Message-ID: | a749d0b9-f751-4f8d-819f-0170a5a33716@uni-muenster.de |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Tom
On 05.09.25 23:06, Tom Lane wrote:
> I remain unsure which way I like better. The NULL approach has the
> advantage of not foreclosing use of empty-string list elements, which
> we might want someday even if there's no obvious value today. (And
> for the same reason, it's less of a behavioral change.) But it still
> feels a bit less intuitive to me.
I think this is a nice addition. The way I see it is: it provides an
unambiguous way to "clear" the variable, which, as you pointed out,
might carry different semantics in the future than an empty string. More
generally, I understand that using NULL (unknown/undefined) to represent
an empty list could be seen as a semantic stretch, but in this case it
doesn’t feel unintuitive to me. Although I prefer this new syntax, I can
definitely live without it :)
Here some tests:
== ALTER SYSTEM SET var TO ''
$ psql postgres -c "ALTER SYSTEM SET local_preload_libraries TO '';"
ALTER SYSTEM
$ cat /usr/local/postgres-dev/testdb/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
local_preload_libraries = '""'
$ pg_ctl -D /usr/local/postgres-dev/testdb -l
/usr/local/postgres-dev/logfile restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
$ psql postgres
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed:
FATAL: could not access file "$libdir/plugins/": No such file or directory
The error itself is expected, but the message does not make it
immediately clear that the problem comes from a misconfigured GUC. But
this seems to be more related to the specific variable than to the scope
of this patch.
== ALTER SYSTEM SET var TO NULL
Using the new syntax it works just fine:
$ psql postgres -c "ALTER SYSTEM SET local_preload_libraries TO NULL;"
ALTER SYSTEM
$ cat /usr/local/postgres-dev/testdb/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
local_preload_libraries = ''
$ pg_ctl -D /usr/local/postgres-dev/testdb -l
/usr/local/postgres-dev/logfile restart
waiting for server to shut down.... done
server stopped
waiting for server to start.... done
server started
$ psql postgres -c "SHOW local_preload_libraries;"
local_preload_libraries
-------------------------
(1 row)
== SET var TO ''
$ psql postgres -c "SET local_preload_libraries TO ''; SHOW
local_preload_libraries;"
SET
local_preload_libraries
-------------------------
""
(1 row)
== SET var TO NULL
$ psql postgres -c "SET local_preload_libraries TO NULL; SHOW
local_preload_libraries;"
SET
local_preload_libraries
-------------------------
(1 row)
== SET var TO list containing empty element
$ psql postgres -c "SET local_preload_libraries TO 'foo',''; SHOW
local_preload_libraries;"
SET
local_preload_libraries
-------------------------
foo, ""
(1 row)
== SET var TO list containing NULL element
$ psql postgres -c "SET local_preload_libraries TO NULL,''; SHOW
local_preload_libraries;"
ERROR: syntax error at or near ","
LINE 1: SET local_preload_libraries TO NULL,''; SHOW local_preload_l...
== SET var TO list containing multiple empty elements
$ /usr/local/postgres-dev/bin/psql postgres -c "SET
local_preload_libraries TO '',''; SHOW local_preload_libraries;"
SET
local_preload_libraries
-------------------------
"", ""
(1 row)
Best regards, Jim
From | Date | Subject | |
---|---|---|---|
Next Message | Matheus Alcantara | 2025-09-06 14:52:34 | Re: Proposal: Out-of-Order NOTIFY via GUC to Improve LISTEN/NOTIFY Throughput |
Previous Message | Matheus Alcantara | 2025-09-06 14:14:54 | Re: LISTEN/NOTIFY bug: VACUUM sets frozenxid past a xid in async queue |