summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian1998-11-24 02:05:14 +0000
committerBruce Momjian1998-11-24 02:05:14 +0000
commit461c0ffc8f47ef9d03a6040b3f67dadc2b3455bc (patch)
tree49cbfbc8333b7839340d8b7ef1af6417de8092a5
parent0db829c4943af36ba12526a490ee4e188cdeff54 (diff)
Vadim's OR fix.
-rw-r--r--src/backend/commands/explain.c13
-rw-r--r--src/backend/executor/nodeIndexscan.c4
-rw-r--r--src/backend/nodes/copyfuncs.c3
-rw-r--r--src/backend/nodes/outfuncs.c5
-rw-r--r--src/backend/nodes/readfuncs.c5
-rw-r--r--src/backend/optimizer/plan/createplan.c7
-rw-r--r--src/include/nodes/plannodes.h3
7 files changed, 28 insertions, 12 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 52ec5c7f44d..72bdcb8bd3c 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.25.2.1 1998/11/12 03:46:14 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.25.2.2 1998/11/24 02:05:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -217,9 +217,14 @@ explain_outNode(StringInfo str, Plan *plan, int indent, ExplainState *es)
{
case T_IndexScan:
appendStringInfo(str, " using ");
- l = ((IndexScan *) plan)->indxid;
- relation = RelationIdCacheGetRelation((int) lfirst(l));
- appendStringInfo(str, (RelationGetRelationName(relation))->data);
+ i = 0;
+ foreach (l, ((IndexScan *) plan)->indxid)
+ {
+ relation = RelationIdCacheGetRelation((int) lfirst(l));
+ if (++i > 1)
+ appendStringInfo(str, ", ");
+ appendStringInfo(str, (RelationGetRelationName(relation))->data);
+ }
case T_SeqScan:
if (((Scan *) plan)->scanrelid > 0)
{
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index 2df3b98a441..287dee91917 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.27 1998/09/01 04:28:32 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.27.2.1 1998/11/24 02:05:03 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -154,7 +154,7 @@ IndexNext(IndexScan *node)
prev_index++)
{
scanstate->cstate.cs_ExprContext->ecxt_scantuple = slot;
- if (ExecQual(nth(prev_index, node->indxqual),
+ if (ExecQual(nth(prev_index, node->indxqualorig),
scanstate->cstate.cs_ExprContext))
{
prev_matches = true;
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 6213456b0d0..f02f8855384 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.49 1998/10/22 13:52:20 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.49.2.1 1998/11/24 02:05:05 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -247,6 +247,7 @@ _copyIndexScan(IndexScan *from)
*/
newnode->indxid = listCopy(from->indxid);
Node_Copy(from, newnode, indxqual);
+ Node_Copy(from, newnode, indxqualorig);
Node_Copy(from, newnode, indxstate);
return newnode;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index f78eb73a15b..84ba6cb1a1d 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.47 1998/10/22 13:52:21 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.47.2.1 1998/11/24 02:05:07 momjian Exp $
*
* NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which
@@ -517,6 +517,9 @@ _outIndexScan(StringInfo str, IndexScan *node)
appendStringInfo(str, " :indxqual ");
_outNode(str, node->indxqual);
+ appendStringInfo(str, " :indxqualorig ");
+ _outNode(str, node->indxqualorig);
+
}
/*
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c
index e56f92f483c..ec0db88ed91 100644
--- a/src/backend/nodes/readfuncs.c
+++ b/src/backend/nodes/readfuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.38 1998/10/22 13:52:22 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.38.2.1 1998/11/24 02:05:08 momjian Exp $
*
* NOTES
* Most of the read functions for plan nodes are tested. (In fact, they
@@ -546,6 +546,9 @@ _readIndexScan()
token = lsptok(NULL, &length); /* eat :indxqual */
local_node->indxqual = nodeRead(true); /* now read it */
+ token = lsptok(NULL, &length); /* eat :indxqualorig */
+ local_node->indxqualorig = nodeRead(true); /* now read it */
+
return local_node;
}
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 8eba20fd68c..11a374a964a 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.32 1998/09/01 04:29:47 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.32.2.1 1998/11/24 02:05:09 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -63,7 +63,7 @@ static Node *fix_indxqual_references(Node *clause, Path *index_path);
static Temp *make_temp(List *tlist, List *keys, Oid *operators,
Plan *plan_node, int temptype);
static IndexScan *make_indexscan(List *qptlist, List *qpqual, Index scanrelid,
- List *indxid, List *indxqual, Cost cost);
+ List *indxid, List *indxqual, List *indxqualorig, Cost cost);
static NestLoop *make_nestloop(List *qptlist, List *qpqual, Plan *lefttree,
Plan *righttree);
static HashJoin *make_hashjoin(List *tlist, List *qpqual,
@@ -405,6 +405,7 @@ create_indexscan_node(IndexPath *best_path,
lfirsti(best_path->path.parent->relids),
best_path->indexid,
fixed_indxqual,
+ indxqual,
best_path->path.path_cost);
return scan_node;
@@ -937,6 +938,7 @@ make_indexscan(List *qptlist,
Index scanrelid,
List *indxid,
List *indxqual,
+ List *indxqualorig,
Cost cost)
{
IndexScan *node = makeNode(IndexScan);
@@ -951,6 +953,7 @@ make_indexscan(List *qptlist,
node->scan.scanrelid = scanrelid;
node->indxid = indxid;
node->indxqual = indxqual;
+ node->indxqualorig = indxqualorig;
node->scan.scanstate = (CommonScanState *) NULL;
return node;
diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h
index 1731b1a2f58..9e7906c730e 100644
--- a/src/include/nodes/plannodes.h
+++ b/src/include/nodes/plannodes.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: plannodes.h,v 1.18 1998/09/01 04:36:46 momjian Exp $
+ * $Id: plannodes.h,v 1.18.2.1 1998/11/24 02:05:14 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -174,6 +174,7 @@ typedef struct IndexScan
Scan scan;
List *indxid;
List *indxqual;
+ List *indxqualorig;
IndexScanState *indxstate;
} IndexScan;