Index: src/backend/catalog/dependency.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/catalog/dependency.c,v retrieving revision 1.34 diff -u -b -r1.34 dependency.c --- src/backend/catalog/dependency.c 29 Nov 2003 19:51:42 -0000 1.34 +++ src/backend/catalog/dependency.c 14 Dec 2003 15:56:35 -0000 @@ -108,8 +108,7 @@ ObjectAddresses *oktodelete, Relation depRel); static void doDeletion(const ObjectAddress *object); -static bool find_expr_references_walker(Node *node, - find_expr_references_context *context); +static bool find_expr_references_walker(Node *node, void *context); static void eliminate_duplicate_dependencies(ObjectAddresses *addrs); static int object_address_comparator(const void *a, const void *b); static void init_object_addresses(ObjectAddresses *addrs); @@ -973,9 +972,10 @@ * of the alias list when we find a reference to it. */ static bool -find_expr_references_walker(Node *node, - find_expr_references_context *context) +find_expr_references_walker(Node *node, void *vcontext) { + find_expr_references_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) Index: src/backend/commands/tablecmds.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/commands/tablecmds.c,v retrieving revision 1.94 diff -u -b -r1.94 tablecmds.c --- src/backend/commands/tablecmds.c 29 Nov 2003 19:51:47 -0000 1.94 +++ src/backend/commands/tablecmds.c 14 Dec 2003 15:56:37 -0000 @@ -77,7 +77,7 @@ static List *MergeAttributes(List *schema, List *supers, bool istemp, List **supOids, List **supconstr, bool *supHasOids); -static bool change_varattnos_of_a_node(Node *node, const AttrNumber *newattno); +static bool change_varattnos_of_a_node(Node *node, AttrNumber *newattno); static void StoreCatalogInheritance(Oid relationId, List *supers); static int findAttrByName(const char *attributeName, List *schema); static void setRelhassubclassInRelation(Oid relationId, bool relhassubclass); @@ -833,8 +833,10 @@ * Note that the passed node tree is modified in place! */ static bool -change_varattnos_walker(Node *node, const AttrNumber *newattno) +change_varattnos_walker(Node *node, void *context) { + const AttrNumber *newattno = context; + if (node == NULL) return false; if (IsA(node, Var)) @@ -855,11 +857,11 @@ return false; } return expression_tree_walker(node, change_varattnos_walker, - (void *) newattno); + context); } static bool -change_varattnos_of_a_node(Node *node, const AttrNumber *newattno) +change_varattnos_of_a_node(Node *node, AttrNumber *newattno) { return change_varattnos_walker(node, newattno); } Index: src/backend/optimizer/path/costsize.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/optimizer/path/costsize.c,v retrieving revision 1.117 diff -u -b -r1.117 costsize.c --- src/backend/optimizer/path/costsize.c 3 Dec 2003 17:45:07 -0000 1.117 +++ src/backend/optimizer/path/costsize.c 14 Dec 2003 15:56:38 -0000 @@ -104,7 +104,7 @@ static Selectivity estimate_hash_bucketsize(Query *root, Var *var, int nbuckets); -static bool cost_qual_eval_walker(Node *node, QualCost *total); +static bool cost_qual_eval_walker(Node *node, void *total); static Selectivity approx_selectivity(Query *root, List *quals, JoinType jointype); static void set_rel_width(Query *root, RelOptInfo *rel); @@ -1503,8 +1503,10 @@ } static bool -cost_qual_eval_walker(Node *node, QualCost *total) +cost_qual_eval_walker(Node *node, void *context) { + QualCost *total = context; + if (node == NULL) return false; Index: src/backend/optimizer/plan/setrefs.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/optimizer/plan/setrefs.c,v retrieving revision 1.99 diff -u -b -r1.99 setrefs.c --- src/backend/optimizer/plan/setrefs.c 29 Nov 2003 19:51:50 -0000 1.99 +++ src/backend/optimizer/plan/setrefs.c 14 Dec 2003 15:56:39 -0000 @@ -51,14 +51,12 @@ List *inner_tlist, Index acceptable_rel, bool tlists_have_non_vars); -static Node *join_references_mutator(Node *node, - join_references_context *context); +static Node *join_references_mutator(Node *node, void *context); static Node *replace_vars_with_subplan_refs(Node *node, Index subvarno, List *subplan_targetlist, bool tlist_has_non_vars); -static Node *replace_vars_with_subplan_refs_mutator(Node *node, - replace_vars_with_subplan_refs_context *context); +static Node *replace_vars_with_subplan_refs_mutator(Node *node, void *context); static bool fix_opfuncids_walker(Node *node, void *context); static void set_sa_opfuncid(ScalarArrayOpExpr *opexpr); @@ -533,9 +531,10 @@ } static Node * -join_references_mutator(Node *node, - join_references_context *context) +join_references_mutator(Node *node, void *vcontext) { + join_references_context *context = vcontext; + if (node == NULL) return NULL; if (IsA(node, Var)) @@ -651,9 +650,10 @@ } static Node * -replace_vars_with_subplan_refs_mutator(Node *node, - replace_vars_with_subplan_refs_context *context) +replace_vars_with_subplan_refs_mutator(Node *node, void *vcontext) { + replace_vars_with_subplan_refs_context *context = vcontext; + if (node == NULL) return NULL; if (IsA(node, Var)) Index: src/backend/optimizer/plan/subselect.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/optimizer/plan/subselect.c,v retrieving revision 1.86 diff -u -b -r1.86 subselect.c --- src/backend/optimizer/plan/subselect.c 29 Nov 2003 19:51:50 -0000 1.86 +++ src/backend/optimizer/plan/subselect.c 14 Dec 2003 15:56:39 -0000 @@ -86,11 +86,11 @@ List **righthandIds); static bool subplan_is_hashable(SubLink *slink, SubPlan *node); static Node *replace_correlation_vars_mutator(Node *node, void *context); -static Node *process_sublinks_mutator(Node *node, bool *isTopQual); +static Node *process_sublinks_mutator(Node *node, void *isTopQual); static Bitmapset *finalize_plan(Plan *plan, List *rtable, Bitmapset *outer_params, Bitmapset *valid_params); -static bool finalize_primnode(Node *node, finalize_primnode_context *context); +static bool finalize_primnode(Node *node, void *context); /* @@ -814,8 +814,9 @@ } static Node * -process_sublinks_mutator(Node *node, bool *isTopQual) +process_sublinks_mutator(Node *node, void *context) { + bool *isTopQual = context; bool locTopQual; if (node == NULL) @@ -1078,8 +1079,10 @@ * expression tree to the result set. */ static bool -finalize_primnode(Node *node, finalize_primnode_context *context) +finalize_primnode(Node *node, void *vcontext) { + finalize_primnode_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Param)) Index: src/backend/optimizer/prep/prepunion.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/optimizer/prep/prepunion.c,v retrieving revision 1.105 diff -u -b -r1.105 prepunion.c --- src/backend/optimizer/prep/prepunion.c 29 Nov 2003 19:51:51 -0000 1.105 +++ src/backend/optimizer/prep/prepunion.c 14 Dec 2003 15:56:40 -0000 @@ -61,8 +61,7 @@ List *input_plans, List *refnames_tlist); static bool tlist_same_datatypes(List *tlist, List *colTypes, bool junkOK); -static Node *adjust_inherited_attrs_mutator(Node *node, - adjust_inherited_attrs_context *context); +static Node *adjust_inherited_attrs_mutator(Node *node, void *context); static Relids adjust_relid_set(Relids relids, Index oldrelid, Index newrelid); static List *adjust_inherited_tlist(List *tlist, Oid old_relid, Oid new_relid); @@ -797,9 +796,10 @@ } static Node * -adjust_inherited_attrs_mutator(Node *node, - adjust_inherited_attrs_context *context) +adjust_inherited_attrs_mutator(Node *node, void *vcontext) { + adjust_inherited_attrs_context *context = vcontext; + if (node == NULL) return NULL; if (IsA(node, Var)) Index: src/backend/optimizer/util/clauses.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/optimizer/util/clauses.c,v retrieving revision 1.156 diff -u -b -r1.156 clauses.c --- src/backend/optimizer/util/clauses.c 9 Dec 2003 01:56:20 -0000 1.156 +++ src/backend/optimizer/util/clauses.c 14 Dec 2003 15:56:41 -0000 @@ -54,13 +54,13 @@ static bool contain_agg_clause_walker(Node *node, void *context); static bool contain_distinct_agg_clause_walker(Node *node, void *context); -static bool count_agg_clause_walker(Node *node, int *count); +static bool count_agg_clause_walker(Node *node, void *count); static bool expression_returns_set_walker(Node *node, void *context); static bool contain_subplans_walker(Node *node, void *context); static bool contain_mutable_functions_walker(Node *node, void *context); static bool contain_volatile_functions_walker(Node *node, void *context); static bool contain_nonstrict_functions_walker(Node *node, void *context); -static Node *eval_const_expressions_mutator(Node *node, List *active_fns); +static Node *eval_const_expressions_mutator(Node *node, void *active_fns); static Expr *simplify_function(Oid funcid, Oid result_type, List *args, bool allow_inline, List *active_fns); static Expr *evaluate_function(Oid funcid, Oid result_type, List *args, @@ -69,8 +69,7 @@ HeapTuple func_tuple, List *active_fns); static Node *substitute_actual_parameters(Node *expr, int nargs, List *args, int *usecounts); -static Node *substitute_actual_parameters_mutator(Node *node, - substitute_actual_parameters_context *context); +static Node *substitute_actual_parameters_mutator(Node *node, void *context); static void sql_inline_error_callback(void *arg); static Expr *evaluate_expr(Expr *expr, Oid result_type); @@ -392,8 +391,10 @@ } static bool -count_agg_clause_walker(Node *node, int *count) +count_agg_clause_walker(Node *node, void *context) { + int *count = context; + if (node == NULL) return false; if (IsA(node, Aggref)) @@ -1043,8 +1044,10 @@ } static Node * -eval_const_expressions_mutator(Node *node, List *active_fns) +eval_const_expressions_mutator(Node *node, void *context) { + List *active_fns = context; + if (node == NULL) return NULL; if (IsA(node, FuncExpr)) @@ -2001,9 +2004,10 @@ } static Node * -substitute_actual_parameters_mutator(Node *node, - substitute_actual_parameters_context *context) +substitute_actual_parameters_mutator(Node *node, void *vcontext) { + substitute_actual_parameters_context *context = vcontext; + if (node == NULL) return NULL; if (IsA(node, Param)) @@ -2197,8 +2201,7 @@ */ bool -expression_tree_walker(Node *node, - bool (*walker) (), +expression_tree_walker(Node *node, bool (*walker) (Node *node, void *context), void *context) { List *temp; @@ -2224,7 +2227,8 @@ /* primitive node types with no subnodes */ break; case T_Aggref: - return walker(((Aggref *) node)->target, context); + return walker((Node *)((Aggref *) node)->target, + context); case T_ArrayRef: { ArrayRef *aref = (ArrayRef *) node; @@ -2237,9 +2241,9 @@ walker, context)) return true; /* walker must see the refexpr and refassgnexpr, however */ - if (walker(aref->refexpr, context)) + if (walker((Node *)aref->refexpr, context)) return true; - if (walker(aref->refassgnexpr, context)) + if (walker((Node *)aref->refassgnexpr, context)) return true; } break; @@ -2318,9 +2322,11 @@ } break; case T_FieldSelect: - return walker(((FieldSelect *) node)->arg, context); + return walker((Node *)((FieldSelect *) node)->arg, + context); case T_RelabelType: - return walker(((RelabelType *) node)->arg, context); + return walker((Node *)((RelabelType *) node)->arg, + context); case T_CaseExpr: { CaseExpr *caseexpr = (CaseExpr *) node; @@ -2331,32 +2337,41 @@ CaseWhen *when = (CaseWhen *) lfirst(temp); Assert(IsA(when, CaseWhen)); - if (walker(when->expr, context)) + if (walker((Node *)when->expr, context)) return true; - if (walker(when->result, context)) + if (walker((Node *)when->result, + context)) return true; } /* caseexpr->arg should be null, but we'll check it anyway */ - if (walker(caseexpr->arg, context)) + if (walker((Node *)caseexpr->arg, context)) return true; - if (walker(caseexpr->defresult, context)) + if (walker((Node *)caseexpr->defresult, + context)) return true; } break; case T_ArrayExpr: - return walker(((ArrayExpr *) node)->elements, context); + return walker((Node *)((ArrayExpr *) node)->elements, + context); case T_CoalesceExpr: - return walker(((CoalesceExpr *) node)->args, context); + return walker((Node *)((CoalesceExpr *) node)->args, + context); case T_NullIfExpr: - return walker(((NullIfExpr *) node)->args, context); + return walker((Node *)((NullIfExpr *) node)->args, + context); case T_NullTest: - return walker(((NullTest *) node)->arg, context); + return walker((Node *)((NullTest *) node)->arg, + context); case T_BooleanTest: - return walker(((BooleanTest *) node)->arg, context); + return walker((Node *)((BooleanTest *) node)->arg, + context); case T_CoerceToDomain: - return walker(((CoerceToDomain *) node)->arg, context); + return walker((Node *)((CoerceToDomain *) node)->arg, + context); case T_TargetEntry: - return walker(((TargetEntry *) node)->expr, context); + return walker((Node *)((TargetEntry *) node)->expr, + context); case T_Query: /* Do nothing with a sub-Query, per discussion above */ break; @@ -2371,7 +2386,7 @@ { FromExpr *from = (FromExpr *) node; - if (walker(from->fromlist, context)) + if (walker((Node *)from->fromlist, context)) return true; if (walker(from->quals, context)) return true; @@ -2446,10 +2461,8 @@ * indicated items. (More flag bits may be added as needed.) */ bool -query_tree_walker(Query *query, - bool (*walker) (), - void *context, - int flags) +query_tree_walker(Query *query, bool (*walker) (Node *node, void *context), + void *context, int flags) { List *rt; @@ -2467,7 +2480,7 @@ return true; if (walker(query->limitCount, context)) return true; - if (walker(query->in_info_list, context)) + if (walker((Node *)query->in_info_list, context)) return true; foreach(rt, query->rtable) { @@ -2481,12 +2494,14 @@ break; case RTE_SUBQUERY: if (!(flags & QTW_IGNORE_RT_SUBQUERIES)) - if (walker(rte->subquery, context)) + if (walker((Node *)rte->subquery, + context)) return true; break; case RTE_JOIN: if (!(flags & QTW_IGNORE_JOINALIASES)) - if (walker(rte->joinaliasvars, context)) + if (walker((Node *)rte->joinaliasvars, + context)) return true; break; case RTE_FUNCTION: @@ -2564,8 +2579,7 @@ Node * expression_tree_mutator(Node *node, - Node *(*mutator) (), - void *context) + Node *(*mutator) (Node *node, void *context), void *context) { /* * The mutator has already decided not to modify the current node, but @@ -2929,10 +2943,8 @@ * modified substructure is safely copied in any case. */ Query * -query_tree_mutator(Query *query, - Node *(*mutator) (), - void *context, - int flags) +query_tree_mutator(Query *query, Node *(*mutator) (Node *node, void *context), + void *context, int flags) { FastList newrt; List *rt; @@ -3000,9 +3012,7 @@ */ bool query_or_expression_tree_walker(Node *node, - bool (*walker) (), - void *context, - int flags) + bool (*walker) (Node *node, void *context), void *context, int flags) { if (node && IsA(node, Query)) return query_tree_walker((Query *) node, @@ -3023,9 +3033,7 @@ */ Node * query_or_expression_tree_mutator(Node *node, - Node *(*mutator) (), - void *context, - int flags) + Node *(*mutator) (Node *node, void *context), void *context, int flags) { if (node && IsA(node, Query)) return (Node *) query_tree_mutator((Query *) node, Index: src/backend/optimizer/util/var.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/optimizer/util/var.c,v retrieving revision 1.55 diff -u -b -r1.55 var.c --- src/backend/optimizer/util/var.c 29 Nov 2003 19:51:51 -0000 1.55 +++ src/backend/optimizer/util/var.c 14 Dec 2003 15:56:42 -0000 @@ -53,19 +53,14 @@ int sublevels_up; } flatten_join_alias_vars_context; -static bool pull_varnos_walker(Node *node, - pull_varnos_context *context); -static bool contain_var_reference_walker(Node *node, - contain_var_reference_context *context); +static bool pull_varnos_walker(Node *node, void *context); +static bool contain_var_reference_walker(Node *node, void *context); static bool contain_var_clause_walker(Node *node, void *context); -static bool contain_vars_of_level_walker(Node *node, int *sublevels_up); -static bool contain_vars_above_level_walker(Node *node, int *sublevels_up); -static bool find_minimum_var_level_walker(Node *node, - find_minimum_var_level_context *context); -static bool pull_var_clause_walker(Node *node, - pull_var_clause_context *context); -static Node *flatten_join_alias_vars_mutator(Node *node, - flatten_join_alias_vars_context *context); +static bool contain_vars_of_level_walker(Node *node, void *sublevels_up); +static bool contain_vars_above_level_walker(Node *node, void *sublevels_up); +static bool find_minimum_var_level_walker(Node *node, void *context); +static bool pull_var_clause_walker(Node *node, void *context); +static Node *flatten_join_alias_vars_mutator(Node *node, void *context); static Relids alias_relid_set(Query *root, Relids relids); @@ -100,8 +95,10 @@ } static bool -pull_varnos_walker(Node *node, pull_varnos_context *context) +pull_varnos_walker(Node *node, void *vcontext) { + pull_varnos_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -159,9 +156,10 @@ } static bool -contain_var_reference_walker(Node *node, - contain_var_reference_context *context) +contain_var_reference_walker(Node *node, void *vcontext) { + contain_var_reference_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -256,8 +254,10 @@ } static bool -contain_vars_of_level_walker(Node *node, int *sublevels_up) +contain_vars_of_level_walker(Node *node, void *context) { + int *sublevels_up = context; + if (node == NULL) return false; if (IsA(node, Var)) @@ -305,8 +305,10 @@ } static bool -contain_vars_above_level_walker(Node *node, int *sublevels_up) +contain_vars_above_level_walker(Node *node, void *context) { + int *sublevels_up = context; + if (node == NULL) return false; if (IsA(node, Var)) @@ -363,9 +365,10 @@ } static bool -find_minimum_var_level_walker(Node *node, - find_minimum_var_level_context *context) +find_minimum_var_level_walker(Node *node, void *vcontext) { + find_minimum_var_level_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -467,8 +470,10 @@ } static bool -pull_var_clause_walker(Node *node, pull_var_clause_context *context) +pull_var_clause_walker(Node *node, void *vcontext) { + pull_var_clause_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -503,9 +508,10 @@ } static Node * -flatten_join_alias_vars_mutator(Node *node, - flatten_join_alias_vars_context *context) +flatten_join_alias_vars_mutator(Node *node, void *vcontext) { + flatten_join_alias_vars_context *context = vcontext; + if (node == NULL) return NULL; if (IsA(node, Var)) Index: src/backend/parser/analyze.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/parser/analyze.c,v retrieving revision 1.292 diff -u -b -r1.292 analyze.c --- src/backend/parser/analyze.c 29 Nov 2003 19:51:51 -0000 1.292 +++ src/backend/parser/analyze.c 14 Dec 2003 15:56:51 -0000 @@ -134,8 +134,7 @@ static bool relationHasPrimaryKey(Oid relationOid); static void release_pstate_resources(ParseState *pstate); static FromExpr *makeFromExpr(List *fromlist, Node *quals); -static bool check_parameter_resolution_walker(Node *node, - check_parameter_resolution_context *context); +static bool check_parameter_resolution_walker(Node *node, void *context); /* @@ -3239,9 +3238,10 @@ * and yet other instances seen later might have gotten coerced. */ static bool -check_parameter_resolution_walker(Node *node, - check_parameter_resolution_context *context) +check_parameter_resolution_walker(Node *node, void *vcontext) { + check_parameter_resolution_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Param)) Index: src/backend/parser/parse_agg.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/parser/parse_agg.c,v retrieving revision 1.60 diff -u -b -r1.60 parse_agg.c --- src/backend/parser/parse_agg.c 29 Nov 2003 19:51:51 -0000 1.60 +++ src/backend/parser/parse_agg.c 14 Dec 2003 15:56:51 -0000 @@ -35,8 +35,7 @@ static void check_ungrouped_columns(Node *node, ParseState *pstate, List *groupClauses, bool have_non_var_grouping); -static bool check_ungrouped_columns_walker(Node *node, - check_ungrouped_columns_context *context); +static bool check_ungrouped_columns_walker(Node *node, void *context); /* @@ -222,9 +221,10 @@ } static bool -check_ungrouped_columns_walker(Node *node, - check_ungrouped_columns_context *context) +check_ungrouped_columns_walker(Node *node, void *vcontext) { + check_ungrouped_columns_context *context = vcontext; + List *gl; if (node == NULL) Index: src/backend/rewrite/rewriteDefine.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/rewrite/rewriteDefine.c,v retrieving revision 1.91 diff -u -b -r1.91 rewriteDefine.c --- src/backend/rewrite/rewriteDefine.c 29 Nov 2003 19:51:55 -0000 1.91 +++ src/backend/rewrite/rewriteDefine.c 14 Dec 2003 15:56:51 -0000 @@ -34,7 +34,7 @@ static void setRuleCheckAsUser(Query *qry, AclId userid); -static bool setRuleCheckAsUser_walker(Node *node, Oid *context); +static bool setRuleCheckAsUser_walker(Node *node, void *context); /* @@ -528,8 +528,10 @@ * Expression-tree walker to find sublink queries */ static bool -setRuleCheckAsUser_walker(Node *node, Oid *context) +setRuleCheckAsUser_walker(Node *node, void *vcontext) { + Oid *context = vcontext; + if (node == NULL) return false; if (IsA(node, Query)) Index: src/backend/rewrite/rewriteHandler.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/rewrite/rewriteHandler.c,v retrieving revision 1.131 diff -u -b -r1.131 rewriteHandler.c --- src/backend/rewrite/rewriteHandler.c 29 Nov 2003 19:51:55 -0000 1.131 +++ src/backend/rewrite/rewriteHandler.c 14 Dec 2003 15:56:51 -0000 @@ -740,7 +740,7 @@ * the SubLink's subselect link with the possibly-rewritten subquery. */ static bool -fireRIRonSubLink(Node *node, List *activeRIRs) +fireRIRonSubLink(Node *node, void *activeRIRs) { if (node == NULL) return false; Index: src/backend/rewrite/rewriteManip.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/rewrite/rewriteManip.c,v retrieving revision 1.81 diff -u -b -r1.81 rewriteManip.c --- src/backend/rewrite/rewriteManip.c 29 Nov 2003 19:51:55 -0000 1.81 +++ src/backend/rewrite/rewriteManip.c 14 Dec 2003 15:56:51 -0000 @@ -27,8 +27,7 @@ int sublevels_up; } checkExprHasAggs_context; -static bool checkExprHasAggs_walker(Node *node, - checkExprHasAggs_context *context); +static bool checkExprHasAggs_walker(Node *node, void *context); static bool checkExprHasSubLink_walker(Node *node, void *context); static Relids offset_relid_set(Relids relids, int offset); static Relids adjust_relid_set(Relids relids, int oldrelid, int newrelid); @@ -63,8 +62,10 @@ } static bool -checkExprHasAggs_walker(Node *node, checkExprHasAggs_context *context) +checkExprHasAggs_walker(Node *node, void *vcontext) { + checkExprHasAggs_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Aggref)) @@ -140,8 +141,10 @@ } OffsetVarNodes_context; static bool -OffsetVarNodes_walker(Node *node, OffsetVarNodes_context *context) +OffsetVarNodes_walker(Node *node, void *vcontext) { + OffsetVarNodes_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -274,8 +277,10 @@ } ChangeVarNodes_context; static bool -ChangeVarNodes_walker(Node *node, ChangeVarNodes_context *context) +ChangeVarNodes_walker(Node *node, void *vcontext) { + ChangeVarNodes_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -425,9 +430,10 @@ } IncrementVarSublevelsUp_context; static bool -IncrementVarSublevelsUp_walker(Node *node, - IncrementVarSublevelsUp_context *context) +IncrementVarSublevelsUp_walker(Node *node, void *vcontext) { + IncrementVarSublevelsUp_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -494,9 +500,10 @@ } rangeTableEntry_used_context; static bool -rangeTableEntry_used_walker(Node *node, - rangeTableEntry_used_context *context) +rangeTableEntry_used_walker(Node *node, void *vcontext) { + rangeTableEntry_used_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -585,9 +592,10 @@ } attribute_used_context; static bool -attribute_used_walker(Node *node, - attribute_used_context *context) +attribute_used_walker(Node *node, void *vcontext) { + attribute_used_context *context = vcontext; + if (node == NULL) return false; if (IsA(node, Var)) @@ -868,8 +876,10 @@ } ResolveNew_context; static Node * -ResolveNew_mutator(Node *node, ResolveNew_context *context) +ResolveNew_mutator(Node *node, void *vcontext) { + ResolveNew_context *context = vcontext; + if (node == NULL) return NULL; if (IsA(node, Var)) Index: src/include/optimizer/clauses.h =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/include/optimizer/clauses.h,v retrieving revision 1.69 diff -u -b -r1.69 clauses.h --- src/include/optimizer/clauses.h 29 Nov 2003 22:41:07 -0000 1.69 +++ src/include/optimizer/clauses.h 14 Dec 2003 15:56:54 -0000 @@ -64,24 +64,27 @@ extern Node *eval_const_expressions(Node *node); -extern bool expression_tree_walker(Node *node, bool (*walker) (), - void *context); -extern Node *expression_tree_mutator(Node *node, Node *(*mutator) (), - void *context); +extern bool expression_tree_walker(Node *node, + bool (*walker) (Node *node, void *context), void *context); +extern Node *expression_tree_mutator(Node *node, + Node *(*mutator) (Node *node, void *context), void *context); /* flags bits for query_tree_walker and query_tree_mutator */ #define QTW_IGNORE_RT_SUBQUERIES 0x01 /* subqueries in rtable */ #define QTW_IGNORE_JOINALIASES 0x02 /* JOIN alias var lists */ #define QTW_DONT_COPY_QUERY 0x04 /* do not copy top Query */ -extern bool query_tree_walker(Query *query, bool (*walker) (), +extern bool query_tree_walker(Query *query, + bool (*walker) (Node *node, void *context), void *context, int flags); -extern Query *query_tree_mutator(Query *query, Node *(*mutator) (), +extern Query *query_tree_mutator(Query *query, + Node *(*mutator) (Node *node, void *context), void *context, int flags); - -extern bool query_or_expression_tree_walker(Node *node, bool (*walker) (), +extern bool query_or_expression_tree_walker(Node *node, + bool (*walker) (Node *node, void *context), void *context, int flags); -extern Node *query_or_expression_tree_mutator(Node *node, Node *(*mutator) (), +extern Node *query_or_expression_tree_mutator(Node *node, + Node *(*mutator) (Node *node, void *context), void *context, int flags); #endif /* CLAUSES_H */