• Tom Lane's avatar
    Make psql reject attempts to set special variables to invalid values. · 511ae628
    Tom Lane authored
    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
    511ae628
input.c 12.7 KB