]> granicus.if.org Git - postgresql/commit - src/bin/psql/common.c
Make psql reject attempts to set special variables to invalid values.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 30 Jan 2017 21:37:15 +0000 (16:37 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 30 Jan 2017 21:37:26 +0000 (16:37 -0500)
commit511ae628f31b4e791cd5c7836e46cb84dcf145fd
tree22e592d129edd1004003680bec809ab1c5e67428
parent46aae5949f56580281a0f487c785c745d8856a04
Make psql reject attempts to set special variables to invalid values.

Previously, if the user set a special variable such as ECHO to an
unrecognized value, psql would bleat but store the new value anyway, and
then fall back to a default setting for the behavior controlled by the
variable.  This was agreed to be a not particularly good idea.  With
this patch, invalid values result in an error message and no change in
state.

(But this applies only to variables that affect psql's behavior; purely
informational variables such as ENCODING can still be set to random
values.)

To do this, modify the API for psql's assign-hook functions so that they
can return an OK/not OK result, and give them the responsibility for
printing error messages when they reject a value.  Adjust the APIs for
ParseVariableBool and ParseVariableNum to support the new behavior
conveniently.

In passing, document the variable VERSION, which had somehow escaped that.
And improve the quite-inadequate commenting in psql/variables.c.

Daniel Vérité, reviewed by Rahila Syed, some further tweaking by me

Discussion: https://postgr.es/m/7356e741-fa59-4146-a8eb-cf95fd6b21fb@mm
doc/src/sgml/ref/psql-ref.sgml
src/bin/psql/command.c
src/bin/psql/common.c
src/bin/psql/input.c
src/bin/psql/mainloop.c
src/bin/psql/startup.c
src/bin/psql/variables.c
src/bin/psql/variables.h
src/test/regress/expected/psql.out
src/test/regress/sql/psql.sql