aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>1999-04-29 00:20:27 +0000
committerTom Lane <tgl@sss.pgh.pa.us>1999-04-29 00:20:27 +0000
commit970583ab4f9818bc79ef7042eaaa791db8e92057 (patch)
tree59c577a461b7806e3c3e694f46d15e586b263793 /src
parent89cf9303fdbad46cefa5b6f42274a8f36a8cc51b (diff)
downloadpostgresql-970583ab4f9818bc79ef7042eaaa791db8e92057.tar.gz
postgresql-970583ab4f9818bc79ef7042eaaa791db8e92057.zip
Several routines in setrefs.c would crash on array refs
due to lack of check for recursing into a null subexpression.
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/plan/setrefs.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index 3584cda1535..b7b8d89c5a7 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.42 1999/04/26 00:37:46 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.43 1999/04/29 00:20:27 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -747,6 +747,9 @@ replace_agg_clause(Node *clause, List *subplanTargetList)
List *t;
List *agg_list = NIL;
+ if (clause == NULL)
+ return NIL;
+
if (IsA(clause, Var))
{
TargetEntry *subplanVar;
@@ -864,6 +867,9 @@ del_agg_clause(Node *clause)
{
List *t;
+ if (clause == NULL)
+ return clause;
+
if (IsA(clause, Var))
return clause;
else if (is_funcclause(clause))
@@ -942,6 +948,9 @@ check_having_qual_for_vars(Node *clause, List *targetlist_so_far)
{
List *t;
+ if (clause == NULL)
+ return targetlist_so_far;
+
if (IsA(clause, Var))
{
RelOptInfo tmp_rel;
@@ -1035,6 +1044,9 @@ check_having_for_ungrouped_vars(Node *clause, List *groupClause)
{
List *t;
+ if (clause == NULL)
+ return;
+
if (IsA(clause, Var))
{
/* Ignore vars elsewhere in the having clause, since the