aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/common/attmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/common/attmap.c')
-rw-r--r--src/backend/access/common/attmap.c12
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 &&