From 4a46a99d8936328ab00e54bf8a2900832c4687e7 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Tue, 15 Mar 2016 16:51:56 -0400 Subject: [PATCH] postgres_fdw: make_tuple_from_result_row should set cur_attno for ctid. There's no reason for this function to do this for every other attribute number and omit it for CTID, especially since conversion_error_callback has code to handle that case. This seems to be an oversight in commit e690b9515072fd7767fdeca5c54166f6a77733bc. Etsuro Fujita --- contrib/postgres_fdw/postgres_fdw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index 96875b4184..e446cc5645 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -3803,18 +3803,17 @@ make_tuple_from_result_row(PGresult *res, valstr = PQgetvalue(res, row, j); /* convert value to internal representation */ + errpos.cur_attno = i; if (i > 0) { /* ordinary column */ Assert(i <= tupdesc->natts); nulls[i - 1] = (valstr == NULL); /* Apply the input function even to nulls, to support domains */ - errpos.cur_attno = i; values[i - 1] = InputFunctionCall(&attinmeta->attinfuncs[i - 1], valstr, attinmeta->attioparams[i - 1], attinmeta->atttypmods[i - 1]); - errpos.cur_attno = 0; } else if (i == SelfItemPointerAttributeNumber) { @@ -3827,6 +3826,7 @@ make_tuple_from_result_row(PGresult *res, ctid = (ItemPointer) DatumGetPointer(datum); } } + errpos.cur_attno = 0; j++; } -- 2.40.0