Comment fixes for extended statistics
authorAlvaro Herrera <[email protected]>
Thu, 6 Apr 2017 15:27:15 +0000 (12:27 -0300)
committerAlvaro Herrera <[email protected]>
Thu, 6 Apr 2017 15:28:50 +0000 (12:28 -0300)
Clean up some code comments in new extended statistics code, from
7b504eb282.

src/backend/optimizer/util/plancat.c
src/backend/statistics/dependencies.c
src/backend/statistics/extended_stats.c
src/backend/utils/cache/relcache.c
src/include/nodes/relation.h

index faebfeddb2c6a139c2a9599bb91f041800b24569..28322cec0e803f0b6ca7f087996073b401f76728 100644 (file)
@@ -79,6 +79,7 @@ static List *get_relation_statistics(RelOptInfo *rel, Relation relation);
  *     min_attr        lowest valid AttrNumber
  *     max_attr        highest valid AttrNumber
  *     indexlist       list of IndexOptInfos for relation's indexes
+ *     statlist        list of StatisticExtInfo for relation's statistic objects
  *     serverid        if it's a foreign table, the server OID
  *     fdwroutine      if it's a foreign table, the FDW function pointers
  *     pages           number of pages
index fb958e1b0a5d7c33ed7bf2d61ae4bcec8bfc8bd8..159ddb872333e4eccba041c8e906ae89fbe838db 100644 (file)
@@ -900,7 +900,13 @@ find_strongest_dependency(StatisticExtInfo * stats, MVDependencies * dependencie
 
 /*
  * dependencies_clauselist_selectivity
- *             Attempt to estimate selectivity using functional dependency statistics
+ *             Return the estimated selectivity of the given clauses using
+ *             functional dependency statistics, or 1.0 if no useful functional
+ *             dependency statistic exists.
+ *
+ * 'estimatedclauses' is an output argument that gets a bit set corresponding
+ * to the (zero-based) list index of clauses that are included in the
+ * estimated selectivity.
  *
  * Given equality clauses on attributes (a,b) we find the strongest dependency
  * between them, i.e. either (a=>b) or (b=>a). Assuming (a=>b) is the selected
@@ -935,7 +941,6 @@ dependencies_clauselist_selectivity(PlannerInfo *root,
        AttrNumber *list_attnums;
        int                     listidx;
 
-
        /* check if there's any stats that might be useful for us. */
        if (!has_stats_of_kind(rel->statlist, STATS_EXT_DEPENDENCIES))
                return 1.0;
index 006bb897c4807b0da80cf1c733f832dacb388f31..4b3aa7781409ae198f8900aa2715af0df0791420 100644 (file)
@@ -408,7 +408,7 @@ multi_sort_compare_dims(int start, int end,
 
 /*
  * has_stats_of_kind
- *     Check that the list contains statistic of a given kind
+ *             Check that the list contains statistic of a given kind
  */
 bool
 has_stats_of_kind(List *stats, char requiredkind)
@@ -428,8 +428,9 @@ has_stats_of_kind(List *stats, char requiredkind)
 
 /*
  * choose_best_statistics
- *             Look for statistics with the specified 'requiredkind' which have keys
- *             that match at least two attnums.
+ *             Look for and return statistics with the specified 'requiredkind' which
+ *             have keys that match at least two of the given attnums.  Return NULL if
+ *             there's no match.
  *
  * The current selection criteria is very simple - we choose the statistics
  * referencing the most attributes with the least keys.
index 24ffea8f40796cf4b49f8383009181ced032ce3a..ddb948528b3c274b4410577a386fb84e7614164e 100644 (file)
@@ -4508,7 +4508,6 @@ RelationGetStatExtList(Relation relation)
                                                                 NULL, 1, &skey);
 
        while (HeapTupleIsValid(htup = systable_getnext(indscan)))
-               /* TODO maybe include only already built statistics? */
                result = insert_ordered_oid(result, HeapTupleGetOid(htup));
 
        systable_endscan(indscan);
index fc53eb171aab685a2fede2fa7b04fd68740ebe26..6bad18e77c7c094896aac2765fda82b35a668c75 100644 (file)
@@ -693,17 +693,15 @@ typedef struct ForeignKeyOptInfo
  * StatisticExtInfo
  *             Information about extended statistics for planning/optimization
  *
- * This contains information about which columns are covered by the
- * statistics (stakeys), which options were requested while adding the
- * statistics (*_enabled), and which kinds of statistics were actually
- * built and are available for the optimizer (*_built).
+ * Each pg_statistic_ext row is represented by one or more nodes of this
+ * type, or even zero if ANALYZE has not computed them.
  */
 typedef struct StatisticExtInfo
 {
        NodeTag         type;
 
        Oid                     statOid;                /* OID of the statistics row */
-       RelOptInfo *rel;                        /* back-link to index's table */
+       RelOptInfo *rel;                        /* back-link to statistic's table */
        char            kind;                   /* statistic kind of this entry */
        Bitmapset  *keys;                       /* attnums of the columns covered */
 } StatisticExtInfo;