mirror of
https://github.com/postgres/postgres.git
synced 2025-11-10 17:42:29 +03:00
Add operator strategy and comparison-value datatype fields to ScanKey.
Remove the 'strategy map' code, which was a large amount of mechanism that no longer had any use except reverse-mapping from procedure OID to strategy number. Passing the strategy number to the index AM in the first place is simpler and faster. This is a preliminary step in planned support for cross-datatype index operations. I'm committing it now since the ScanKeyEntryInitialize() API change touches quite a lot of files, and I want to commit those changes before the tree drifts under me.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.265 2003/08/17 23:43:25 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.266 2003/11/09 21:30:36 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -262,6 +262,17 @@ _copyIndexScan(IndexScan *from)
|
||||
COPY_OIDLIST_FIELD(indxid);
|
||||
COPY_NODE_FIELD(indxqual);
|
||||
COPY_NODE_FIELD(indxqualorig);
|
||||
/* this can become COPY_NODE_FIELD when intlists are normal objects: */
|
||||
{
|
||||
List *newstrat = NIL;
|
||||
List *tmp;
|
||||
|
||||
foreach(tmp, from->indxstrategy)
|
||||
{
|
||||
newstrat = lappend(newstrat, listCopy(lfirst(tmp)));
|
||||
}
|
||||
newnode->indxstrategy = newstrat;
|
||||
}
|
||||
COPY_SCALAR_FIELD(indxorderdir);
|
||||
|
||||
return newnode;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.218 2003/08/17 23:43:26 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.219 2003/11/09 21:30:36 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Every node type that can appear in stored rules' parsetrees *must*
|
||||
@@ -336,6 +336,16 @@ _outIndexScan(StringInfo str, IndexScan *node)
|
||||
WRITE_OIDLIST_FIELD(indxid);
|
||||
WRITE_NODE_FIELD(indxqual);
|
||||
WRITE_NODE_FIELD(indxqualorig);
|
||||
/* this can become WRITE_NODE_FIELD when intlists are normal objects: */
|
||||
{
|
||||
List *tmp;
|
||||
|
||||
appendStringInfo(str, " :indxstrategy ");
|
||||
foreach(tmp, node->indxstrategy)
|
||||
{
|
||||
_outIntList(str, lfirst(tmp));
|
||||
}
|
||||
}
|
||||
WRITE_ENUM_FIELD(indxorderdir, ScanDirection);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user