diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-09-11 14:48:55 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-09-11 14:48:55 +0000 |
commit | 6fdc44be71e7732b4a9550d04befcc9144ef188f (patch) | |
tree | 31f001c17376b228922d1424c6b70e477318e2ad /src/backend/optimizer/util/var.c | |
parent | d634a5903f615a45cb463155c04d3df904e1b91a (diff) | |
download | postgresql-6fdc44be71e7732b4a9550d04befcc9144ef188f.tar.gz postgresql-6fdc44be71e7732b4a9550d04befcc9144ef188f.zip |
Tweak querytree-dependency-extraction code so that columns of tables
that are explicitly JOINed are not considered dependencies unless they
are actually used in the query: mere presence in the joinaliasvars
list of a JOIN RTE doesn't count as being used. The patch touches
a number of files because I needed to generalize the API of
query_tree_walker to support an additional flag bit, but the changes
are otherwise quite small.
Diffstat (limited to 'src/backend/optimizer/util/var.c')
-rw-r--r-- | src/backend/optimizer/util/var.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index ccccdbf1808..23b824dbcb0 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.39 2002/09/04 20:31:22 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.40 2002/09/11 14:48:54 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -82,7 +82,7 @@ pull_varnos(Node *node) */ if (node && IsA(node, Query)) query_tree_walker((Query *) node, pull_varnos_walker, - (void *) &context, true); + (void *) &context, 0); else pull_varnos_walker(node, &context); @@ -128,7 +128,7 @@ pull_varnos_walker(Node *node, pull_varnos_context *context) context->sublevels_up++; result = query_tree_walker((Query *) node, pull_varnos_walker, - (void *) context, true); + (void *) context, 0); context->sublevels_up--; return result; } @@ -165,7 +165,7 @@ contain_var_reference(Node *node, int varno, int varattno, int levelsup) if (node && IsA(node, Query)) return query_tree_walker((Query *) node, contain_var_reference_walker, - (void *) &context, true); + (void *) &context, 0); else return contain_var_reference_walker(node, &context); } @@ -212,7 +212,7 @@ contain_var_reference_walker(Node *node, context->sublevels_up++; result = query_tree_walker((Query *) node, contain_var_reference_walker, - (void *) context, true); + (void *) context, 0); context->sublevels_up--; return result; } |