custom parameters cannot be removed once set

Поиск
Список
Период
Сортировка
От Joe Conway
Тема custom parameters cannot be removed once set
Дата
Msg-id 56842412.5000005@joeconway.com
обсуждение исходный текст
Ответы Re: custom parameters cannot be removed once set  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: custom parameters cannot be removed once set  (Joe Conway <mail@joeconway.com>)
Список pgsql-hackers
Today I was reminded of an issue I have run across before, namely that
in a given postgres session, once a custom parameter has been set, there
is no way to remove it entirely. For example:

8<-------------------
# psql regression
psql (9.5rc1)
Type "help" for help.

regression=# SELECT current_setting('app_name.app_user');
ERROR:  unrecognized configuration parameter "app_name.app_user"
regression=# BEGIN;
BEGIN
regression=# SET LOCAL app_name.app_user = 'bob';
SET
regression=# SELECT current_setting('app_name.app_user');current_setting
-----------------bob
(1 row)

regression=# ROLLBACK;
ROLLBACK
regression=# SELECT current_setting('app_name.app_user');current_setting
-----------------

(1 row)

regression=# RESET app_name.app_user;
RESET
regression=# SELECT current_setting('app_name.app_user');current_setting
-----------------

(1 row)

regression=# SELECT current_setting('app_name.app_user') = '';?column?
----------t
(1 row)
8<-------------------

Note that before app_name.app_user has been set the first time, an error
is thrown if we try to access it. However once it has been set, even
when done as SET LOCAL and inside a rolled back transaction, the
parameter continues to exist and no error is thrown when reading it. And
it is not even NULL, it is actually an empty string.

This strikes me as, at least, surprising, and possibly should be
considered a bug. Thoughts?

A side issue is that it would be nice if there were a way to check for a
custom parameter value without getting an error if it does not exist.
There is a missing_ok option to GetConfigOptionByName(), but we
currently don't expose it from SQL. I'd like to add a variant of
current_setting() with a second argument for missing_ok. Objections?

Thanks,

Joe

--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Some 9.5beta2 backend processes not terminating properly?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: custom parameters cannot be removed once set