aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/ruleutils.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-06-13 03:40:49 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-06-13 03:40:49 +0000
commitecb5269404bcb489aaa46d433f9d564e47d2a490 (patch)
tree36eaf0c16ef67a1b741fc150feb088fead877e28 /src/backend/utils/adt/ruleutils.c
parent59c325bb7363aed9115e9f3ccb77feca05b00ec4 (diff)
downloadpostgresql-ecb5269404bcb489aaa46d433f9d564e47d2a490.tar.gz
postgresql-ecb5269404bcb489aaa46d433f9d564e47d2a490.zip
Further tweaks to support display of sort keys in EXPLAIN --- initial
implementation didn't work for Sort nodes associated with Append plans.
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
-rw-r--r--src/backend/utils/adt/ruleutils.c32
1 files changed, 8 insertions, 24 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 6d576349d96..2c15bf916b9 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -3,7 +3,7 @@
* back to source text
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.107 2002/05/28 22:16:15 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.108 2002/06/13 03:40:49 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -685,16 +685,21 @@ deparse_context_for(const char *aliasname, Oid relid)
* The passed-in Nodes should be made using deparse_context_for_subplan
* and/or deparse_context_for_relation. The resulting context will work
* for deparsing quals, tlists, etc of the plan node.
+ *
+ * An rtable list can also be passed in case plain Vars might be seen.
+ * This is not needed for true upper-level expressions, but is helpful for
+ * Sort nodes and similar cases with slightly bogus targetlists.
*/
List *
deparse_context_for_plan(int outer_varno, Node *outercontext,
- int inner_varno, Node *innercontext)
+ int inner_varno, Node *innercontext,
+ List *rtable)
{
deparse_namespace *dpns;
dpns = (deparse_namespace *) palloc(sizeof(deparse_namespace));
- dpns->rtable = NIL;
+ dpns->rtable = rtable;
dpns->outer_varno = outer_varno;
dpns->outer_rte = (RangeTblEntry *) outercontext;
dpns->inner_varno = inner_varno;
@@ -779,27 +784,6 @@ deparse_context_for_subplan(const char *name, List *tlist,
return (Node *) rte;
}
-/*
- * deparse_context_from_rtable - Build deparse context given a rangetable
- *
- * This is suitable for deparsing expressions that refer to only a single
- * level of variables (no outer-reference Vars).
- */
-List *
-deparse_context_from_rtable(List *rtable)
-{
- deparse_namespace *dpns;
-
- dpns = (deparse_namespace *) palloc(sizeof(deparse_namespace));
-
- dpns->rtable = rtable;
- dpns->outer_varno = dpns->inner_varno = 0;
- dpns->outer_rte = dpns->inner_rte = NULL;
-
- /* Return a one-deep namespace stack */
- return makeList1(dpns);
-}
-
/* ----------
* make_ruledef - reconstruct the CREATE RULE command
* for a given pg_rewrite tuple