mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Since createplan.c no longer cares whether index operators are lossy, it has
no particular need to do get_op_opfamily_properties() while building an indexscan plan. Postpone that lookup until executor start. This simplifies createplan.c a lot more than it complicates nodeIndexscan.c, and makes things more uniform since we already had to do it that way for RowCompare expressions. Should be a bit faster too, at least for plans that aren't re-used many times, since we avoid palloc'ing and perhaps copying the intermediate list data structure.
This commit is contained in:
10
src/backend/utils/cache/lsyscache.c
vendored
10
src/backend/utils/cache/lsyscache.c
vendored
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.156 2008/03/25 22:42:44 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.157 2008/04/13 20:51:21 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Eventually, the index information should go through here, too.
|
||||
@ -80,8 +80,8 @@ get_op_opfamily_strategy(Oid opno, Oid opfamily)
|
||||
/*
|
||||
* get_op_opfamily_properties
|
||||
*
|
||||
* Get the operator's strategy number, input types, and recheck (lossy)
|
||||
* flag within the specified opfamily.
|
||||
* Get the operator's strategy number and declared input data types
|
||||
* within the specified opfamily.
|
||||
*
|
||||
* Caller should already have verified that opno is a member of opfamily,
|
||||
* therefore we raise an error if the tuple is not found.
|
||||
@ -90,8 +90,7 @@ void
|
||||
get_op_opfamily_properties(Oid opno, Oid opfamily,
|
||||
int *strategy,
|
||||
Oid *lefttype,
|
||||
Oid *righttype,
|
||||
bool *recheck)
|
||||
Oid *righttype)
|
||||
{
|
||||
HeapTuple tp;
|
||||
Form_pg_amop amop_tup;
|
||||
@ -107,7 +106,6 @@ get_op_opfamily_properties(Oid opno, Oid opfamily,
|
||||
*strategy = amop_tup->amopstrategy;
|
||||
*lefttype = amop_tup->amoplefttype;
|
||||
*righttype = amop_tup->amoprighttype;
|
||||
*recheck = amop_tup->amopreqcheck;
|
||||
ReleaseSysCache(tp);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user