From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp> |
Cc: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Missing conversion error handling in postgres_fdw |
Date: | 2016-03-15 20:55:14 |
Message-ID: | CA+TgmobZ9UJkoXmwFG2g5TLVU8x1-roZs6Kq56dzmDyDpi6OMA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Mar 15, 2016 at 4:06 AM, Etsuro Fujita
<fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp> wrote:
> I noticed that this in make_tuple_from_result_row does conversion error
> handling only for the ordinary-column case (ie, errpos.cur_attno is set
> for that case, but not for the ctid case).
>
> /* convert value to internal representation */
> 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)
> {
> /* ctid --- note we ignore any other system column in result */
> if (valstr != NULL)
> {
> Datum datum;
>
> datum = DirectFunctionCall1(tidin, CStringGetDatum(valstr));
> ctid = (ItemPointer) DatumGetPointer(datum);
> }
> }
>
> I think errpos.cur_attno should be set for the ctid case as well.
> Attached is a patch for that.
Hmm, I'd say you are right. Committed.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Corey Huinker | 2016-03-15 21:10:50 | Re: Soliciting Feedback on Improving Server-Side Programming Documentation |
Previous Message | Robert Haas | 2016-03-15 20:44:12 | Re: Re: [COMMITTERS] pgsql: Only try to push down foreign joins if the user mapping OIDs mat |