BUG #14877: DISCARD ALL incorrectly resets user parameters

Started by Nonameover 8 years ago5 messagesbugs
Jump to latest
#1Noname
dmitriy@riabov.info

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

#2Fabrízio de Royes Mello
fabriziomello@gmail.com
In reply to: Noname (#1)
Re: BUG #14877: DISCARD ALL incorrectly resets user parameters

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

Show quoted text

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

#3David G. Johnston
david.g.johnston@gmail.com
In reply to: Fabrízio de Royes Mello (#2)
Re: BUG #14877: DISCARD ALL incorrectly resets user parameters

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.

David J.

#4Fabrízio de Royes Mello
fabriziomello@gmail.com
In reply to: David G. Johnston (#3)
Re: BUG #14877: DISCARD ALL incorrectly resets user parameters

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

Show quoted text

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

#5David G. Johnston
david.g.johnston@gmail.com
In reply to: Fabrízio de Royes Mello (#4)
Re: BUG #14877: DISCARD ALL incorrectly resets user parameters

On Fri, Oct 27, 2017 at 7:22 AM, Fabrízio de Royes Mello <
fabriziomello@gmail.com> wrote:

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.