From: Bruce Momjian Date: Tue, 24 Nov 1998 02:05:14 +0000 (+0000) Subject: Vadim's OR fix. X-Git-Tag: REL6_4_2~49 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=461c0ffc8f47ef9d03a6040b3f67dadc2b3455bc;p=postgresql Vadim's OR fix. --- diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 52ec5c7f44..72bdcb8bd3 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 2df3b98a44..287dee9191 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 6213456b0d..f02f885538 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 f78eb73a15..84ba6cb1a1 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 e56f92f483..ec0db88ed9 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 8eba20fd68..11a374a964 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 1731b1a2f5..9e7906c730 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;