Fix _equalA_Const
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 9 Sep 2021 08:23:29 +0000 (10:23 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 9 Sep 2021 08:23:29 +0000 (10:23 +0200)
639a86e36aaecb84faaf941dcd0b183ba0aba9e9 neglected to make the
necessary adjustments to _equalA_Const.  Found only via
COPY_PARSE_PLAN_TREES.

src/backend/nodes/equalfuncs.c

index 231380ccf7402d92aabfcf25c4739a47d7f18915..4bad709f835a2b2b0993932513d562deb6975bd1 100644 (file)
@@ -2409,8 +2409,14 @@ _equalParamRef(const ParamRef *a, const ParamRef *b)
 static bool
 _equalA_Const(const A_Const *a, const A_Const *b)
 {
-   if (!equal(&a->val, &b->val))   /* hack for in-line val field */
+   /*
+    * Hack for in-line val field.  Also val is not valid is isnull is
+    * true.
+    */
+   if (!a->isnull && !b->isnull &&
+       !equal(&a->val, &b->val))
        return false;
+   COMPARE_SCALAR_FIELD(isnull);
    COMPARE_LOCATION_FIELD(location);
 
    return true;