OSDN Git Service

If we're going to expose VariableStatData for contrib modules to use,
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Apr 2006 00:46:59 +0000 (00:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Apr 2006 00:46:59 +0000 (00:46 +0000)
then we should export a reasonable set of the supporting routines too.

src/backend/utils/adt/selfuncs.c
src/include/utils/selfuncs.h

index 1b37f38..17817c0 100644 (file)
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.201 2006/04/26 22:32:56 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.202 2006/04/27 00:46:58 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "utils/syscache.h"
 
 
-static double mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc,
-                                                         Datum constval, double *sumcommonp);
 static double ineq_histogram_selectivity(VariableStatData *vardata,
                                                                                 FmgrInfo *opproc, bool isgt,
                                                                                 Datum constval, Oid consttype);
@@ -138,12 +136,6 @@ static double convert_one_bytea_to_scalar(unsigned char *value, int valuelen,
                                                        int rangelo, int rangehi);
 static char *convert_string_datum(Datum value, Oid typid);
 static double convert_timevalue_to_scalar(Datum value, Oid typid);
-static void get_join_variables(PlannerInfo *root, List *args,
-                                  VariableStatData *vardata1,
-                                  VariableStatData *vardata2);
-static void examine_variable(PlannerInfo *root, Node *node, int varRelid,
-                                VariableStatData *vardata);
-static double get_variable_numdistinct(VariableStatData *vardata);
 static bool get_variable_maximum(PlannerInfo *root, VariableStatData *vardata,
                                         Oid sortop, Datum *max);
 static Selectivity prefix_selectivity(VariableStatData *vardata,
@@ -476,7 +468,7 @@ scalarineqsel(PlannerInfo *root, Oid operator, bool isgt,
  * total population is returned into *sumcommonp.  Zeroes are returned
  * if there is no MCV list.
  */
-static double
+double
 mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc, Datum constval,
                                double *sumcommonp)
 {
@@ -3203,7 +3195,7 @@ get_restriction_variable(PlannerInfo *root, List *args, int varRelid,
  * get_join_variables
  *             Apply examine_variable() to each side of a join clause.
  */
-static void
+void
 get_join_variables(PlannerInfo *root, List *args,
                                   VariableStatData *vardata1, VariableStatData *vardata2)
 {
@@ -3246,7 +3238,7 @@ get_join_variables(PlannerInfo *root, List *args,
  *
  * Caller is responsible for doing ReleaseVariableStats() before exiting.
  */
-static void
+void
 examine_variable(PlannerInfo *root, Node *node, int varRelid,
                                 VariableStatData *vardata)
 {
@@ -3429,7 +3421,7 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid,
  * NB: be careful to produce an integral result, since callers may compare
  * the result to exact integer counts.
  */
-static double
+double
 get_variable_numdistinct(VariableStatData *vardata)
 {
        double          stadistinct;
index ad484d8..9ba11c9 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/selfuncs.h,v 1.30 2006/04/26 22:33:36 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/selfuncs.h,v 1.31 2006/04/27 00:46:59 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -97,6 +97,19 @@ typedef enum
 
 /* selfuncs.c */
 
+extern void examine_variable(PlannerInfo *root, Node *node, int varRelid,
+                                                        VariableStatData *vardata);
+extern bool get_restriction_variable(PlannerInfo *root, List *args,
+                                                                        int varRelid,
+                                                                        VariableStatData *vardata, Node **other,
+                                                                        bool *varonleft);
+extern void get_join_variables(PlannerInfo *root, List *args,
+                                                          VariableStatData *vardata1,
+                                                          VariableStatData *vardata2);
+extern double get_variable_numdistinct(VariableStatData *vardata);
+extern double mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc,
+                                                         Datum constval, double *sumcommonp);
+
 extern Pattern_Prefix_Status pattern_fixed_prefix(Const *patt,
                                         Pattern_Type ptype,
                                         Const **prefix,
@@ -154,8 +167,5 @@ extern Selectivity estimate_hash_bucketsize(PlannerInfo *root, Node *hashkey,
 extern Datum btcostestimate(PG_FUNCTION_ARGS);
 extern Datum hashcostestimate(PG_FUNCTION_ARGS);
 extern Datum gistcostestimate(PG_FUNCTION_ARGS);
-extern bool get_restriction_variable(PlannerInfo *root, List *args, int varRelid,
-                                                VariableStatData *vardata, Node **other,
-                                                bool *varonleft);
 
 #endif   /* SELFUNCS_H */