diff options
| author | Heikki Linnakangas | 2013-03-14 13:36:56 +0000 |
|---|---|---|
| committer | Heikki Linnakangas | 2013-03-14 13:36:56 +0000 |
| commit | 59d0bf9dca58b237902c2fd1507e8bc5d54d4a63 (patch) | |
| tree | 0dd4fae4c70714395710a1817a0f23a37903a877 /src/include | |
| parent | 788bce13d3249ddbcdf3443ee078145f4888ab45 (diff) | |
Add cost estimation of range @> and <@ operators.
The estimates are based on the existing lower bound histogram, and a new
histogram of range lengths.
Bump catversion, because the range length histogram now needs to be present
in statistic slot kind 6, or you get an error on @> and <@ queries. (A
re-ANALYZE would be enough to fix that, though)
Alexander Korotkov, with some refactoring by me.
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/catalog/catversion.h | 2 | ||||
| -rw-r--r-- | src/include/catalog/pg_operator.h | 1 | ||||
| -rw-r--r-- | src/include/catalog/pg_statistic.h | 12 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 9c63fa18b5b..db0776e24d1 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 201303101 +#define CATALOG_VERSION_NO 201303141 #endif diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h index 1f8f7287aa6..d79d76ee24b 100644 --- a/src/include/catalog/pg_operator.h +++ b/src/include/catalog/pg_operator.h @@ -527,6 +527,7 @@ DATA(insert OID = 671 ( "<>" PGNSP PGUID b f f 701 701 16 671 670 float8ne DESCR("not equal"); DATA(insert OID = 672 ( "<" PGNSP PGUID b f f 701 701 16 674 675 float8lt scalarltsel scalarltjoinsel )); DESCR("less than"); +#define Float8LessOperator 672 DATA(insert OID = 673 ( "<=" PGNSP PGUID b f f 701 701 16 675 674 float8le scalarltsel scalarltjoinsel )); DESCR("less than or equal"); DATA(insert OID = 674 ( ">" PGNSP PGUID b f f 701 701 16 672 673 float8gt scalargtsel scalargtjoinsel )); diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h index 3b46dc7091d..55a20b81c5a 100644 --- a/src/include/catalog/pg_statistic.h +++ b/src/include/catalog/pg_statistic.h @@ -269,11 +269,15 @@ typedef FormData_pg_statistic *Form_pg_statistic; #define STATISTIC_KIND_DECHIST 5 /* - * An "empty frac" slot describes the fraction of empty ranges in a range-type - * column. stavalues is not used and should be NULL. stanumbers contains a - * single entry, the fraction of empty ranges (0.0 to 1.0). + * A "length histogram" slot describes the distribution of range lengths in + * rows of a range-type column. stanumbers contains a single entry, the + * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in + * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range + * values that divide the column data values into M-1 bins of approximately + * equal population. The lengths are stores as float8s, as measured by the + * range type's subdiff function. Only non-null rows are considered. */ -#define STATISTIC_KIND_RANGE_EMPTY_FRAC 6 +#define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 /* * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for |
