Zoltan Boszormenyi <zboszor(at)dunaweb(dot)hu> writes:
> Would it be acceptable?
No, because you can't create index entries when you haven't yet got the
TID for the heap tuple. What do you propose doing, insert a dummy index
entry and then go back to fill it in later? Aside from approximately
doubling the work involved, this is fundamentally broken because no
other backend could know what to do upon encountering the dummy index
entry --- there's no way for it to check if the entry references a live
tuple or not. Not to mention that a crash here will leave a permanently
dummy index entry that there's no way to vacuum.
The other rearrangements you suggest are not any more acceptable;
we are not going to restructure the entire handling of defaults and
check constraints around a single badly-designed SQL2003 feature.
regards, tom lane