From ff58f39f3b37d916b0e01586945dd73e06fc5ac8 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 25 Aug 2008 20:20:30 +0000 Subject: [PATCH] Get rid of the last remaining uses of var_is_rel(), to wit some debugging checks in ExecIndexBuildScanKeys() that were inadequate anyway: it's better to verify the correct varno on an expected index key, not just reject OUTER and INNER. This makes the entire current contents of nodeFuncs.c dead code. I'll be replacing it with some other stuff later, as per recent proposal. --- src/backend/executor/nodeBitmapIndexscan.c | 1 + src/backend/executor/nodeIndexscan.c | 15 ++++++++------- src/include/executor/nodeIndexscan.h | 1 + 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/backend/executor/nodeBitmapIndexscan.c b/src/backend/executor/nodeBitmapIndexscan.c index e7a81b4d8e..30f0e158de 100644 --- a/src/backend/executor/nodeBitmapIndexscan.c +++ b/src/backend/executor/nodeBitmapIndexscan.c @@ -275,6 +275,7 @@ ExecInitBitmapIndexScan(BitmapIndexScan *node, EState *estate, int eflags) */ ExecIndexBuildScanKeys((PlanState *) indexstate, indexstate->biss_RelationDesc, + node->scan.scanrelid, node->indexqual, &indexstate->biss_ScanKeys, &indexstate->biss_NumScanKeys, diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index c6fcc015b2..4d106ec981 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -29,7 +29,6 @@ #include "access/relscan.h" #include "executor/execdebug.h" #include "executor/nodeIndexscan.h" -#include "nodes/nodeFuncs.h" #include "optimizer/clauses.h" #include "utils/array.h" #include "utils/lsyscache.h" @@ -576,6 +575,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate, int eflags) */ ExecIndexBuildScanKeys((PlanState *) indexstate, indexstate->iss_RelationDesc, + node->scan.scanrelid, node->indexqual, &indexstate->iss_ScanKeys, &indexstate->iss_NumScanKeys, @@ -653,6 +653,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate, int eflags) * * planstate: executor state node we are working for * index: the index we are building scan keys for + * scanrelid: varno of the index's relation within current query * quals: indexquals expressions * * Output params are: @@ -668,8 +669,8 @@ ExecInitIndexScan(IndexScan *node, EState *estate, int eflags) * ScalarArrayOpExpr quals are not supported. */ void -ExecIndexBuildScanKeys(PlanState *planstate, Relation index, List *quals, - ScanKey *scanKeys, int *numScanKeys, +ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid, + List *quals, ScanKey *scanKeys, int *numScanKeys, IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys, IndexArrayKeyInfo **arrayKeys, int *numArrayKeys) { @@ -753,7 +754,7 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, List *quals, Assert(leftop != NULL); if (!(IsA(leftop, Var) && - var_is_rel((Var *) leftop))) + ((Var *) leftop)->varno == scanrelid)) elog(ERROR, "indexqual doesn't have key on left side"); varattno = ((Var *) leftop)->varattno; @@ -837,7 +838,7 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, List *quals, Assert(leftop != NULL); if (!(IsA(leftop, Var) && - var_is_rel((Var *) leftop))) + ((Var *) leftop)->varno == scanrelid)) elog(ERROR, "indexqual doesn't have key on left side"); varattno = ((Var *) leftop)->varattno; @@ -942,7 +943,7 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, List *quals, Assert(leftop != NULL); if (!(IsA(leftop, Var) && - var_is_rel((Var *) leftop))) + ((Var *) leftop)->varno == scanrelid)) elog(ERROR, "indexqual doesn't have key on left side"); varattno = ((Var *) leftop)->varattno; @@ -1003,7 +1004,7 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, List *quals, Assert(leftop != NULL); if (!(IsA(leftop, Var) && - var_is_rel((Var *) leftop))) + ((Var *) leftop)->varno == scanrelid)) elog(ERROR, "NullTest indexqual has wrong key"); varattno = ((Var *) leftop)->varattno; diff --git a/src/include/executor/nodeIndexscan.h b/src/include/executor/nodeIndexscan.h index 615b78bd65..f239cc598e 100644 --- a/src/include/executor/nodeIndexscan.h +++ b/src/include/executor/nodeIndexscan.h @@ -26,6 +26,7 @@ extern void ExecIndexReScan(IndexScanState *node, ExprContext *exprCtxt); /* routines exported to share code with nodeBitmapIndexscan.c */ extern void ExecIndexBuildScanKeys(PlanState *planstate, Relation index, + Index scanrelid, List *quals, ScanKey *scanKeys, int *numScanKeys, IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys, IndexArrayKeyInfo **arrayKeys, int *numArrayKeys); -- 2.39.5