* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.168 2010/02/26 02:01:11 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.169 2010/04/23 22:23:39 sriggs Exp $
*
* NOTES
* Eventually, the index information should go through here, too.
/* Hook for plugins to get control in get_attavgwidth() */
get_attavgwidth_hook_type get_attavgwidth_hook = NULL;
+/* Hook for plugins to get control in get_func_cost and get_func_rows */
+get_func_cost_hook_type get_func_cost_hook = NULL;
+get_func_rows_hook_type get_func_rows_hook = NULL;
/* ---------- AMOP CACHES ---------- */
HeapTuple tp;
float4 result;
+ if (get_func_cost_hook)
+ {
+ result = (*get_func_cost_hook) (funcid);
+ if (result > (float4) 0)
+ return result;
+ }
tp = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
if (!HeapTupleIsValid(tp))
elog(ERROR, "cache lookup failed for function %u", funcid);
HeapTuple tp;
float4 result;
+ if (get_func_rows_hook)
+ {
+ result = (*get_func_rows_hook) (funcid);
+ if (result > (float4) 0)
+ return result;
+ }
tp = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcid));
if (!HeapTupleIsValid(tp))
elog(ERROR, "cache lookup failed for function %u", funcid);
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/lsyscache.h,v 1.131 2010/01/04 02:44:40 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/utils/lsyscache.h,v 1.132 2010/04/23 22:23:39 sriggs Exp $
*
*-------------------------------------------------------------------------
*/
typedef int32 (*get_attavgwidth_hook_type) (Oid relid, AttrNumber attnum);
extern PGDLLIMPORT get_attavgwidth_hook_type get_attavgwidth_hook;
+/* Hook for plugins to get control in get_func_cost and get_func_rows */
+typedef float4 (*get_func_cost_hook_type) (Oid funcid);
+extern PGDLLIMPORT get_func_cost_hook_type get_func_cost_hook;
+typedef float4 (*get_func_rows_hook_type) (Oid funcid);
+extern PGDLLIMPORT get_func_rows_hook_type get_func_rows_hook;
+
extern bool op_in_opfamily(Oid opno, Oid opfamily);
extern int get_op_opfamily_strategy(Oid opno, Oid opfamily);
extern void get_op_opfamily_properties(Oid opno, Oid opfamily,