]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix variable lifespan in ExecInitCoerceToDomain().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Nov 2021 17:36:47 +0000 (13:36 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Nov 2021 17:36:53 +0000 (13:36 -0400)
This undoes a mistake in 1ec7679f1: domainval and domainnull were
meant to live across loop iterations, but they were incorrectly
moved inside the loop.  The effect was only to emit useless extra
EEOP_MAKE_READONLY steps, so it's not a big deal; nonetheless,
back-patch to v13 where the mistake was introduced.

Ranier Vilela

Discussion: https://postgr.es/m/CAEudQAqXuhbkaAp-sGH6dR6Nsq7v28_0TPexHOm6FiDYqwQD-w@mail.gmail.com

src/backend/executor/execExpr.c

index bd4e4956aa117567c953b3f3cb28e5646663683a..954a6b9438d4bd373bb23e619ed9f85c7a86ecd0 100644 (file)
@@ -3121,6 +3121,8 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
                                           ExprState *state, Datum *resv, bool *resnull)
 {
        DomainConstraintRef *constraint_ref;
+       Datum      *domainval = NULL;
+       bool       *domainnull = NULL;
        ListCell   *l;
 
        scratch->d.domaincheck.resulttype = ctest->resulttype;
@@ -3167,8 +3169,6 @@ ExecInitCoerceToDomain(ExprEvalStep *scratch, CoerceToDomain *ctest,
        foreach(l, constraint_ref->constraints)
        {
                DomainConstraintState *con = (DomainConstraintState *) lfirst(l);
-               Datum      *domainval = NULL;
-               bool       *domainnull = NULL;
                Datum      *save_innermost_domainval;
                bool       *save_innermost_domainnull;