Re: WIP patch: add (PRE|POST)PROCESSOR options to COPY

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Peter Eisentraut <peter_e@gmx.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@2ndquadrant.com>, Simon Riggs <simon@2ndquadrant.com>, Fujii Masao <masao.fujii@gmail.com>, Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>, Craig Ringer <ringerc@ringerc.id.au>, pgsql-hackers@postgresql.org
Date: 2012-11-14T19:22:11Z
Lists: pgsql-hackers
On 11/14/2012 02:05 PM, Peter Eisentraut wrote:
> On 11/14/12 11:50 AM, Andrew Dunstan wrote:
>>>      COPY table FROM 'some command line |';
>>>      COPY table TO '| some command line';
>>>
>>
>> I'd like to be able to filter STDIN if possible - with this syntax how
>> is COPY going to know to hook up STDIN to the program?
> Why don't you filter the data before it gets to stdin?  Some program is
> feeding the data to "stdin" on the client side.  Why doesn't that do the
> filtering?  I don't see a large advantage in having the data be sent
> unfiltered to the server and having the server do the filtering.


Centralization of processing would be one obvious reason. I don't really 
see why the same reasoning doesn't apply on the backend. You could just 
preprocess the input before calling COPY (via a plperlu function for 
example). If we're going to have filtering functionality then it should 
be as general as possible, ISTM. But I seem to be alone in this, so I 
won't push it.

cheers

andrew