|
7 | 7 | * |
8 | 8 | * |
9 | 9 | * IDENTIFICATION |
10 | | - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.42 1999/04/26 00:37:46 tgl Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.43 1999/04/29 00:20:27 tgl Exp $ |
11 | 11 | * |
12 | 12 | *------------------------------------------------------------------------- |
13 | 13 | */ |
@@ -747,6 +747,9 @@ replace_agg_clause(Node *clause, List *subplanTargetList) |
747 | 747 | List*t; |
748 | 748 | List*agg_list=NIL; |
749 | 749 |
|
| 750 | +if (clause==NULL) |
| 751 | +returnNIL; |
| 752 | + |
750 | 753 | if (IsA(clause,Var)) |
751 | 754 | { |
752 | 755 | TargetEntry*subplanVar; |
@@ -864,6 +867,9 @@ del_agg_clause(Node *clause) |
864 | 867 | { |
865 | 868 | List*t; |
866 | 869 |
|
| 870 | +if (clause==NULL) |
| 871 | +returnclause; |
| 872 | + |
867 | 873 | if (IsA(clause,Var)) |
868 | 874 | returnclause; |
869 | 875 | elseif (is_funcclause(clause)) |
@@ -942,6 +948,9 @@ check_having_qual_for_vars(Node *clause, List *targetlist_so_far) |
942 | 948 | { |
943 | 949 | List*t; |
944 | 950 |
|
| 951 | +if (clause==NULL) |
| 952 | +returntargetlist_so_far; |
| 953 | + |
945 | 954 | if (IsA(clause,Var)) |
946 | 955 | { |
947 | 956 | RelOptInfotmp_rel; |
@@ -1035,6 +1044,9 @@ check_having_for_ungrouped_vars(Node *clause, List *groupClause) |
1035 | 1044 | { |
1036 | 1045 | List*t; |
1037 | 1046 |
|
| 1047 | +if (clause==NULL) |
| 1048 | +return; |
| 1049 | + |
1038 | 1050 | if (IsA(clause,Var)) |
1039 | 1051 | { |
1040 | 1052 | /* Ignore vars elsewhere in the having clause, since the |
|