@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $ PostgreSQL : pgsql / src / backend / executor / nodeIndexscan . c , v 1.129 2008 / 06 / 19 00 : 46 : 04 alvherre Exp $
* $ PostgreSQL : pgsql / src / backend / executor / nodeIndexscan . c , v 1.130 2008 / 08 / 25 20 : 20 : 30 tgl Exp $
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
@ -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 ;