]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Force tuple conversion when the source has missing attributes.
authorAndrew Gierth <rhodiumtoad@postgresql.org>
Wed, 5 Feb 2020 19:49:47 +0000 (19:49 +0000)
committerAndrew Gierth <rhodiumtoad@postgresql.org>
Wed, 5 Feb 2020 20:21:20 +0000 (20:21 +0000)
commitbf6cc19e347d4cb8dfc8f05a59171ac06e18b5e5
tree21bf27ec08732a4100d74289a6a7b700361aa18a
parent15d13e82911f7cc9f04f0bf419a96fd827fd1a9d
Force tuple conversion when the source has missing attributes.

Tuple conversion incorrectly concluded that no conversion was needed
as long as all the attributes lined up. But if the source tuple has a
missing attribute (from addition of a column with default), then the
destination tupdesc might not reflect the same default. The typical
symptom was that the affected columns would be unexpectedly NULL.

Repair by always forcing conversion if the source has missing
attributes, which will be filled in by the deform operation. (In
theory we could optimize for when the destination has the same
default, but that seemed overkill.)

Backpatch to 11 where missing attributes were added.

Per bug #16242.

Vik Fearing (discovery, code, testing) and me (analysis, testcase).

Discussion: https://postgr.es/m/16242-d1c9fca28445966b@postgresql.org
src/backend/access/common/attmap.c
src/test/regress/expected/alter_table.out
src/test/regress/sql/alter_table.sql