Fix handling of extended statistics during ALTER COLUMN TYPE. ALTER COLUMN TYPE on a column used by a statistics object fails since commit 928c4de30, because the relevant switch in ATExecAlterColumnType is unprepared for columns to have dependencies from OCLASS_STATISTIC_EXT objects.
Although the existing types of extended statistics don't actually need us to do any work for a column type change, it seems completely indefensible that that assumption is hidden behind the failure of an unrelated module to contain any code for the case. Hence, create and call an API function in statscmds.c where the assumption can be explained, and where we could add code to deal with the problem when it inevitably becomes real. Also, the reason this wasn't handled before, neither for extended stats nor for the last half-dozen new OCLASS kinds :-(, is that the default: in that switch suppresses compiler warnings, allowing people to miss the need to consider it when adding an OCLASS. We don't really need a default because surely getObjectClass should only return valid values of the enum; so remove it, and add the missed OCLASS entries where they should be. Discussion: https://postgr.es/m/20170512221010.nglatgt5azzdxjlj@alvherre.pgsql Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/b5b0db19b895f033ada35bc7c337183be7356977 Modified Files -------------- src/backend/commands/statscmds.c | 28 ++++++++++++++++++++++++++++ src/backend/commands/tablecmds.c | 24 +++++++++++++++++++++--- src/include/commands/defrem.h | 3 +++ src/test/regress/expected/stats_ext.out | 25 +++++++++++++++++++++++++ src/test/regress/sql/stats_ext.sql | 11 +++++++++++ 5 files changed, 88 insertions(+), 3 deletions(-) -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers