diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-04-11 23:06:57 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-04-11 23:06:57 +0000 |
commit | addc42c339208d6a7a1d652fbf388e8aea7f80b9 (patch) | |
tree | e349d31f2ae1006ed4078b811dae8d842e00d969 /src/backend/utils/cache/lsyscache.c | |
parent | c3294f1cbfe02293b4a7c6b2e58ca4c09a7e541f (diff) |
Create the planner mechanism for optimizing simple MIN and MAX queries
into indexscans on matching indexes. For the moment, it only handles
int4 and text datatypes; next step is to add a column to pg_aggregate
so that all MIN/MAX aggregates can be handled. Per my recent proposal.
Diffstat (limited to 'src/backend/utils/cache/lsyscache.c')
-rw-r--r-- | src/backend/utils/cache/lsyscache.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index 3abbf65fa48..2c4d20576a5 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -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.122 2005/03/31 22:46:14 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.123 2005/04/11 23:06:56 tgl Exp $ * * NOTES * Eventually, the index information should go through here, too. @@ -54,6 +54,31 @@ op_in_opclass(Oid opno, Oid opclass) } /* + * get_op_opclass_strategy + * + * Get the operator's strategy number within the specified opclass, + * or 0 if it's not a member of the opclass. + */ +int +get_op_opclass_strategy(Oid opno, Oid opclass) +{ + HeapTuple tp; + Form_pg_amop amop_tup; + int result; + + tp = SearchSysCache(AMOPOPID, + ObjectIdGetDatum(opno), + ObjectIdGetDatum(opclass), + 0, 0); + if (!HeapTupleIsValid(tp)) + return 0; + amop_tup = (Form_pg_amop) GETSTRUCT(tp); + result = amop_tup->amopstrategy; + ReleaseSysCache(tp); + return result; +} + +/* * get_op_opclass_properties * * Get the operator's strategy number, subtype, and recheck (lossy) flag |