Make ANALYZE compute basic statistics even for types with no "=" operator.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 23 Sep 2015 22:26:49 +0000 (18:26 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 23 Sep 2015 22:26:58 +0000 (18:26 -0400)
commitcfb2024ae40e3bbf7a7390bbb053504b757705c2
tree783c07bc1b6babc75dcc5845fb66f444a28bd25b
parentfe6d2ab473fdbe4b9408d8da3e97a5091171c743
Make ANALYZE compute basic statistics even for types with no "=" operator.

Previously, ANALYZE simply ignored columns of datatypes that have neither
a btree nor hash opclass (which means they have no recognized equality
operator).  Without a notion of equality, we can't identify most-common
values nor estimate the number of distinct values.  But we can still
count nulls and compute the average physical column width, and those
stats might be of value.  Moreover there are some tools out there that
don't work so well if rows are missing from pg_statistic.  So let's
add suitable logic for this case.

While this is arguably a bug fix, it also has the potential to change
query plans, and the gain seems not worth taking a risk of that in
stable branches.  So back-patch into 9.5 but not further.

Oleksandr Shulgin, rewritten a bit by me.
src/backend/commands/analyze.c