diff options
Diffstat (limited to 'src/backend/access/common/attmap.c')
-rw-r--r-- | src/backend/access/common/attmap.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/backend/access/common/attmap.c b/src/backend/access/common/attmap.c index a074852a015..2cd16d7eafb 100644 --- a/src/backend/access/common/attmap.c +++ b/src/backend/access/common/attmap.c @@ -294,8 +294,14 @@ check_attrmap_match(TupleDesc indesc, for (i = 0; i < attrMap->maplen; i++) { - Form_pg_attribute inatt; - Form_pg_attribute outatt; + Form_pg_attribute inatt = TupleDescAttr(indesc, i); + Form_pg_attribute outatt = TupleDescAttr(outdesc, i); + + /* + * If the input column has a missing attribute, we need a conversion. + */ + if (inatt->atthasmissing) + return false; if (attrMap->attnums[i] == (i + 1)) continue; @@ -305,8 +311,6 @@ check_attrmap_match(TupleDesc indesc, * dropped, we don't need a conversion. However, attlen and attalign * must agree. */ - inatt = TupleDescAttr(indesc, i); - outatt = TupleDescAttr(outdesc, i); if (attrMap->attnums[i] == 0 && inatt->attisdropped && inatt->attlen == outatt->attlen && |