Hi,
Var TargetEntry *tle;
Have several paths where can it fail.

Can anyone check this bug fix?

--- \dll\postgresql-12.0\a\backend\parser\parse_expr.c  Mon Sep 30 17:06:55 2019
+++ parse_expr.c        Tue Nov 12 12:43:07 2019
@@ -349,6 +349,7 @@
                                         errmsg("DEFAULT is not allowed in this 
context"),
                                         parser_errposition(pstate,
                                                                                
((SetToDefault *) expr)->location)));
+                       result = NULL;          /* keep compiler quiet */
                        break;
 
                        /*
@@ -1637,11 +1638,13 @@
                        pstate->p_multiassign_exprs = 
lappend(pstate->p_multiassign_exprs,
                                                                                
                  tle);
                }
-               else
+               else {
                        ereport(ERROR,
                                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                                         errmsg("source for a multiple-column 
UPDATE item must be a sub-SELECT or ROW() expression"),
                                         parser_errposition(pstate, 
exprLocation(maref->source))));
+            return NULL;
+        }
        }
        else
        {
@@ -1653,6 +1656,10 @@
                Assert(pstate->p_multiassign_exprs != NIL);
                tle = (TargetEntry *) llast(pstate->p_multiassign_exprs);
        }
+    if (tle == NULL) {
+           elog(ERROR, "unexpected expr type in multiassign list");
+           return NULL;                                /* keep compiler quiet 
*/
+    }
 
        /*
         * Emit the appropriate output expression for the current column

Attachment: parse_expr.c.patch
Description: parse_expr.c.patch

Reply via email to