mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Remove support for OR'd indexscans internal to a single IndexScan plan
node, as this behavior is now better done as a bitmap OR indexscan. This allows considerable simplification in nodeIndexscan.c itself as well as several planner modules concerned with indexscan plan generation. Also we can improve the sharing of code between regular and bitmap indexscans, since they are now working with nigh-identical Plan nodes.
This commit is contained in:
@ -15,7 +15,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.302 2005/04/19 22:35:13 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.303 2005/04/25 01:30:13 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -253,13 +253,12 @@ _copyIndexScan(IndexScan *from)
|
||||
/*
|
||||
* copy remainder of node
|
||||
*/
|
||||
COPY_NODE_FIELD(indxid);
|
||||
COPY_NODE_FIELD(indxqual);
|
||||
COPY_NODE_FIELD(indxqualorig);
|
||||
COPY_NODE_FIELD(indxstrategy);
|
||||
COPY_NODE_FIELD(indxsubtype);
|
||||
COPY_NODE_FIELD(indxlossy);
|
||||
COPY_SCALAR_FIELD(indxorderdir);
|
||||
COPY_SCALAR_FIELD(indexid);
|
||||
COPY_NODE_FIELD(indexqual);
|
||||
COPY_NODE_FIELD(indexqualorig);
|
||||
COPY_NODE_FIELD(indexstrategy);
|
||||
COPY_NODE_FIELD(indexsubtype);
|
||||
COPY_SCALAR_FIELD(indexorderdir);
|
||||
|
||||
return newnode;
|
||||
}
|
||||
@ -280,11 +279,11 @@ _copyBitmapIndexScan(BitmapIndexScan *from)
|
||||
/*
|
||||
* copy remainder of node
|
||||
*/
|
||||
COPY_SCALAR_FIELD(indxid);
|
||||
COPY_NODE_FIELD(indxqual);
|
||||
COPY_NODE_FIELD(indxqualorig);
|
||||
COPY_NODE_FIELD(indxstrategy);
|
||||
COPY_NODE_FIELD(indxsubtype);
|
||||
COPY_SCALAR_FIELD(indexid);
|
||||
COPY_NODE_FIELD(indexqual);
|
||||
COPY_NODE_FIELD(indexqualorig);
|
||||
COPY_NODE_FIELD(indexstrategy);
|
||||
COPY_NODE_FIELD(indexsubtype);
|
||||
|
||||
return newnode;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.249 2005/04/21 19:18:12 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.250 2005/04/25 01:30:13 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Every node type that can appear in stored rules' parsetrees *must*
|
||||
@ -351,13 +351,12 @@ _outIndexScan(StringInfo str, IndexScan *node)
|
||||
|
||||
_outScanInfo(str, (Scan *) node);
|
||||
|
||||
WRITE_NODE_FIELD(indxid);
|
||||
WRITE_NODE_FIELD(indxqual);
|
||||
WRITE_NODE_FIELD(indxqualorig);
|
||||
WRITE_NODE_FIELD(indxstrategy);
|
||||
WRITE_NODE_FIELD(indxsubtype);
|
||||
WRITE_NODE_FIELD(indxlossy);
|
||||
WRITE_ENUM_FIELD(indxorderdir, ScanDirection);
|
||||
WRITE_OID_FIELD(indexid);
|
||||
WRITE_NODE_FIELD(indexqual);
|
||||
WRITE_NODE_FIELD(indexqualorig);
|
||||
WRITE_NODE_FIELD(indexstrategy);
|
||||
WRITE_NODE_FIELD(indexsubtype);
|
||||
WRITE_ENUM_FIELD(indexorderdir, ScanDirection);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -367,11 +366,11 @@ _outBitmapIndexScan(StringInfo str, BitmapIndexScan *node)
|
||||
|
||||
_outScanInfo(str, (Scan *) node);
|
||||
|
||||
WRITE_OID_FIELD(indxid);
|
||||
WRITE_NODE_FIELD(indxqual);
|
||||
WRITE_NODE_FIELD(indxqualorig);
|
||||
WRITE_NODE_FIELD(indxstrategy);
|
||||
WRITE_NODE_FIELD(indxsubtype);
|
||||
WRITE_OID_FIELD(indexid);
|
||||
WRITE_NODE_FIELD(indexqual);
|
||||
WRITE_NODE_FIELD(indexqualorig);
|
||||
WRITE_NODE_FIELD(indexstrategy);
|
||||
WRITE_NODE_FIELD(indexsubtype);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user