• Alvaro Herrera's avatar
    Fix ALTER TABLE / SET TYPE for irregular inheritance · 3957b58b
    Alvaro Herrera authored
    If inherited tables don't have exactly the same schema, the USING clause
    in an ALTER TABLE / SET DATA TYPE misbehaves when applied to the
    children tables since commit 9550e834.  Starting with that commit,
    the attribute numbers in the USING expression are fixed during parse
    analysis.  This can lead to bogus errors being reported during
    execution, such as:
       ERROR:  attribute 2 has wrong type
       DETAIL:  Table has type smallint, but query expects integer.
    
    Since it wouldn't do to revert to the original coding, we now apply a
    transformation to map the attribute numbers to the correct ones for each
    child.
    
    Reported by Justin Pryzby
    Analysis by Tom Lane; patch by me.
    Discussion: https://postgr.es/m/20170102225618.GA10071@telsasoft.com
    3957b58b
tablecmds.c 406 KB