I wonder if it wouldn't be easier to reorder the TupDesc->attrs[] array according to an attphysid when filling the TupDesc structure, right after a column was dropped/recreated (before any indexes/constraints are recreated), so attnum remains, while storage changes.
Example:
before: attnum attphysid attname attisdropped
1 1 foo f 2 2 bar f
after drop/recreate col: 1 3 foo f 2 2 bar f 3 1 foo_del t
resulting in an attrs array attrs[0] describing physical col 3 attrs[1] describing physical col 2 attrs[2] describing physical col 1
Regards, Andreas
---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match