Re: Missing Column names with multi-insert

From: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
To: Liz Frost <web(at)stillinbeta(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Missing Column names with multi-insert
Date: 2019-02-18 22:50:20
Message-ID: 94986e14-de79-62f4-c7e9-043c25a2b057@2ndQuadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


On 2/18/19 2:34 PM, Liz Frost wrote:
> Hello all,
>
> I'm working on a foreign data wrapper that uses INSERT, and I noticed
> some odd behaviour. If I insert just one row, the
> TupleDesc->attr[0]->attname.data has the column names in it. However,
> in a multi-row string, all those are empty strings: 
>
> I added this debugging code to BeginForeignInsert
> in https://bitbucket.org/adunstan/blackhole_fdw on postgres 10.
>
> int i;
>   FormData_pg_attribute *attr;
>   TupleDesc tupleDesc;
>
>   tupleDesc = slot->tts_tupleDescriptor;
>
>   for (i = 0; i < tupleDesc -> natts; i++) {
>     attr = tupleDesc->attrs[i];
>     elog(WARNING, "found column '%s'", attr->attname.data);
>   }
>
> Now with a single row insert, this works as you'd expect:
>
> liz=# INSERT INTO bhtable (key, value) VALUES ('hello', 'world');
> WARNING:  found column 'key'
> WARNING:  found column 'value'
> INSERT 0 1
>
> But with a multi-row, all the column names are empty:
> liz=# INSERT INTO bhtable (key, value) VALUES ('hello', 'world'),
> ('goodmorning', 'world');
> WARNING:  found column ''
> WARNING:  found column ''
> WARNING:  found column ''
> WARNING:  found column ''
> INSERT 0 2
>
> It doesn't seem unreasonable to me that this data wouldn't be
> duplicated, but there's no mention of how I would go about retriving
> these column names for my individual rows, and most foreign data
> wrappers I can find are write-only.
>
>

There are numerous writable FDWs, including postgres_fdw in contrib, and
a whole lot more listed at <https://wiki.postgresql.org/wiki/Fdw> That
should supply you with plenty of example code.

cheers

andrew

--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2019-02-18 22:53:27 Re: Delay locking partitions during INSERT and UPDATE
Previous Message Tom Lane 2019-02-18 22:47:07 Re: Delay locking partitions during INSERT and UPDATE