Обсуждение: [BUGS] BUG #14877: DISCARD ALL incorrectly resets user parameters
The following bug has been logged on the website: Bug reference: 14877 Logged by: Dmitriy Riabov Email address: dmitriy@riabov.info PostgreSQL version: 10.0 Operating system: Debian 8 Description: Affected versions: 9.4 - 10. Versions prior to 9.4 haven't been tested. How to reproduce the bug: # psql testdb testdb=# select current_setting('var.test'); ERROR: unrecognized configuration parameter "var.test" testdb=# select set_config('var.test', '123', false);set_config ------------123 (1 row) testdb=# select current_setting('var.test');current_setting -----------------123 (1 row) testdb=# discard all; DISCARD ALL testdb=# select current_setting('var.test');current_setting ----------------- (1 row) -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
Re: [BUGS] BUG #14877: DISCARD ALL incorrectly resets user parameters
От
Fabrízio de Royes Mello
Дата:
On Fri, Oct 27, 2017 at 11:21 AM, <dmitriy@riabov.info> wrote:
>
> The following bug has been logged on the website:
>
> Bug reference: 14877
> Logged by: Dmitriy Riabov
> Email address: dmitriy@riabov.info
> PostgreSQL version: 10.0
> Operating system: Debian 8
> Description:
>
> Affected versions: 9.4 - 10. Versions prior to 9.4 haven't been tested.
>
> How to reproduce the bug:
>
> # psql testdb
>
> testdb=# select current_setting('var.test');
> ERROR: unrecognized configuration parameter "var.test"
> testdb=# select set_config('var.test', '123', false);
> set_config
> ------------
> 123
> (1 row)
>
> testdb=# select current_setting('var.test');
> current_setting
> -----------------
> 123
> (1 row)
>
> testdb=# discard all;
> DISCARD ALL
> testdb=# select current_setting('var.test');
> current_setting
> -----------------
>
> (1 row)
>
Why do you think this wrong? This is the default behavior of DISCARD ALL since when 8.3 introduced it.
Regards,
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Timbira: http://www.timbira.com.br
>> Blog: http://fabriziomello.github.io
>> Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
>> Github: http://github.com/fabriziomello
Why do you think this wrong? This is the default behavior of DISCARD ALL since when 8.3 introduced it.
> Bug reference: 14877
> Logged by: Dmitriy Riabov
>
Docs say DISCARD ALL means:
SET SESSION AUTHORIZATION DEFAULT;
RESET ALL;
DEALLOCATE ALL;
CLOSE ALL;
UNLISTEN *;
SELECT pg_advisory_unlock_all();
DISCARD PLANS;
DISCARD SEQUENCES;
DISCARD TEMP;
The "RESET ALL" command is what causes the GUCs to be reset. If you don't wish for them to be reset create a function the does all of the above minus the RESET ALL.
David J.
Re: [BUGS] BUG #14877: DISCARD ALL incorrectly resets user parameters
От
Fabrízio de Royes Mello
Дата:
On Fri, Oct 27, 2017 at 12:05 PM, David G. Johnston <david.g.johnston@gmail.com> wrote:
>
> On Fri, Oct 27, 2017 at 6:43 AM, Fabrízio de Royes Mello <fabriziomello@gmail.com> wrote:
>>
>>
>> > Bug reference: 14877
>> > Logged by: Dmitriy Riabov
>> >
>> Why do you think this wrong? This is the default behavior of DISCARD ALL since when 8.3 introduced it.
>>
>
> Docs say DISCARD ALL means:
>
> SET SESSION AUTHORIZATION DEFAULT;
> RESET ALL;
> DEALLOCATE ALL;
> CLOSE ALL;
> UNLISTEN *;
> SELECT pg_advisory_unlock_all();
> DISCARD PLANS;
> DISCARD SEQUENCES;
> DISCARD TEMP;
>
> The "RESET ALL" command is what causes the GUCs to be reset. If you don't wish for them to be reset create a function the does all of the above minus the RESET ALL.
>
I wonder if be nice to have some new DISCARD construct to cover different use cases, something like:
DISCARD { ALL | PLANS | TEMP | SEQUENCES | ( { SESSION AUTHORIZARION | RESET | PREPARED STATEMENT | CURSORS | NOTIFY | ADVISORY LOCKS | PLANS | SEQUENCES | TEMP } [, ...] ) }
Regards,
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Timbira: http://www.timbira.com.br
>> Blog: http://fabriziomello.github.io
>> Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
>> Github: http://github.com/fabriziomello
Regards,
--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Timbira: http://www.timbira.com.br
>> Blog: http://fabriziomello.github.io
>> Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
>> Github: http://github.com/fabriziomello
On Fri, Oct 27, 2017 at 12:05 PM, David G. Johnston <david.g.johnston@gmail.com> wrote:
I wonder if be nice to have some new DISCARD construct to cover different use cases, something like:DISCARD { ALL | PLANS | TEMP | SEQUENCES | ( { SESSION AUTHORIZARION | RESET | PREPARED STATEMENT | CURSORS | NOTIFY | ADVISORY LOCKS | PLANS | SEQUENCES | TEMP } [, ...] ) }
DISCARD ALL ( RESET false ) ...
David J.