• Tom Lane's avatar
    Fix handling of extended statistics during ALTER COLUMN TYPE. · b5b0db19
    Tom Lane authored
    ALTER COLUMN TYPE on a column used by a statistics object fails since
    commit 928c4de3, 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
    b5b0db19
statscmds.c 12.5 KB