BUG #15646: Inconsistent behavior for current_setting/set_config
От | PG Bug reporting form |
---|---|
Тема | BUG #15646: Inconsistent behavior for current_setting/set_config |
Дата | |
Msg-id | 15646-0d3caee9f6266f60@postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #15646: Inconsistent behavior for current_setting/set_config
|
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 15646 Logged by: Eugen Konkov Email address: kes-kes@yandex.ru PostgreSQL version: 10.4 Operating system: (Debian 10.4-2.pgdg90+1) Description: Hi. [documentation](https://www.postgresql.org/docs/11/functions-admin.html#FUNCTIONS-ADMIN-SET) describes that: >set_config sets the parameter setting_name to new_value. If is_local is true, the new value will only apply to the current transaction. Thus if I rollback transaction original value should be available. But current behavior returns empty string instead of NULL (the initial value) after transaction is rolled back. When I restart session, NULL is returned again as it is expected. ( I expect NULL just because 'my.app_period' is not configuration variable is not defined yet. The documentation (link provided above) does not cover what should be returned) How to reproduce steps: $ make dbshell psql -h databases -p 5433 -U tucha tucha ||: psql (11.1 (Ubuntu 11.1-1.pgdg16.04+1), server 10.4 (Debian 10.4-2.pgdg90+1)) Type "help" for help. We start a new session and check setting value before transaction. It is NULL: tucha=> select current_setting( 'my.app_period', true ) is null; ?column? ---------- t (1 row) We start transaction and change the setting value: tucha=> begin; BEGIN tucha=> select set_config( 'my.app_period', 'some value', true ); set_config ------------ some value (1 row) We can see that value is changed. It is NOT NULL: tucha=> select current_setting( 'my.app_period', true ) is null; ?column? ---------- f (1 row) tucha=> select current_setting( 'my.app_period', true ); current_setting ----------------- some value (1 row) Here I finish transaction (it has no matter how: commit/rollback): tucha=> rollback; ROLLBACK Here we can see that setting value is different from value that was before transaction tucha=> select current_setting( 'my.app_period', true ) is null; ?column? ---------- f (1 row) tucha=> \q When I restart session I get NULL again (as expected): kes@work ~/t $ make dbshell psql -h databases -p 5433 -U tucha tucha ||: psql (11.1 (Ubuntu 11.1-1.pgdg16.04+1), server 10.4 (Debian 10.4-2.pgdg90+1)) Type "help" for help. tucha=> select current_setting( 'my.app_period', true ) is null; ?column? ---------- t (1 row) My database version: tucha=> select version(); version ------------------------------------------------------------------------------------------ PostgreSQL 10.4 (Debian 10.4-2.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian (1 row)
В списке pgsql-bugs по дате отправления: