pgsql: Fix assorted oversights in range selectivity estimation.
От | Tom Lane |
---|---|
Тема | pgsql: Fix assorted oversights in range selectivity estimation. |
Дата | |
Msg-id | E1YHFPZ-0000va-4R@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix assorted oversights in range selectivity estimation. calc_rangesel() failed outright when comparing range variables to empty constant ranges with < or >=, as a result of missing cases in a switch. It also produced a bogus estimate for > comparison to an empty range. On top of that, the >= and > cases were mislabeled throughout. For nonempty constant ranges, they managed to produce the right answers anyway as a result of counterbalancing typos. Also, default_range_selectivity() omitted cases for elem <@ range, range &< range, and range &> range, so that rather dubious defaults were applied for these operators. In passing, rearrange the code in rangesel() so that the elem <@ range case is handled in a less opaque fashion. Report and patch by Emre Hasegeli, some additional work by me Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/3d660d33aab2f1eb98367a84eb2addf3e0969c05 Modified Files -------------- src/backend/utils/adt/rangetypes_selfuncs.c | 50 ++++++++++++++++++--------- src/include/catalog/pg_operator.h | 4 +-- src/test/regress/expected/rangetypes.out | 32 +++++++++++++++++ src/test/regress/sql/rangetypes.sql | 4 +++ 4 files changed, 72 insertions(+), 18 deletions(-)
В списке pgsql-committers по дате отправления: