]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
psql: Make ParseVariableDouble reject values above max
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Mon, 18 May 2026 15:33:36 +0000 (08:33 -0700)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Mon, 18 May 2026 15:33:36 +0000 (08:33 -0700)
ParseVariableDouble missed returning false after logging an error when
the parsed value exceeded max, making the value assigned rather than
rejected.  Backpatch down to v18 where this was introduced as part of
the \WATCH_INTERVAL.

Author: Sven Klemm <sven@tigerdata.com>
Co-authored-by: Daniel Gustafsson <daniel@yesql.se>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Discussion: https://postgr.es/m/CAMCrgp31p_5SDVi7dwnP39tTW5icQ0MWHA+N4kJdXgkL0PEy8w@mail.gmail.com
Backpatch-through: 18

src/bin/psql/t/001_basic.pl
src/bin/psql/variables.c

index 3961e69e1cc7f112d56f4eaab76cd00368d06b76..bbd330216ae27887f71e8152a04dfc824d68c640 100644 (file)
@@ -452,6 +452,8 @@ psql_fails_like(
        '\set WATCH_INTERVAL 1e500',
        qr/is out of range/,
        'WATCH_INTERVAL variable is out of range');
+psql_like($node, '\echo :WATCH_INTERVAL',
+       qr/^2$/m, 'WATCH_INTERVAL variable was not altered');
 
 # Test \g output piped into a program.
 # The program is perl -pe '' to simply copy the input to the output.
index f2a28bc9820a0a8ed2d5db1509b111aaa38c64ad..8060f2959ccff23d20418adad57d2ed0d6a3a1b1 100644 (file)
@@ -224,6 +224,7 @@ ParseVariableDouble(const char *value, const char *name, double *result, double
                        if (name)
                                pg_log_error("invalid value \"%s\" for variable \"%s\": must be less than %.2f",
                                                         value, name, max);
+                       return false;
                }
                *result = dblval;
                return true;