Missing conversion error handling in postgres_fdw
| От | Etsuro Fujita | 
|---|---|
| Тема | Missing conversion error handling in postgres_fdw | 
| Дата | |
| Msg-id | 56E7C273.40908@lab.ntt.co.jp обсуждение исходный текст | 
| Ответы | Re: Missing conversion error handling in postgres_fdw | 
| Список | pgsql-hackers | 
Hi,
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.
Best regards,
Etsuro Fujita
		
	Вложения
В списке pgsql-hackers по дате отправления: