Re: R: feature proposal ...

Bruce Momjian <pgman@candle.pha.pa.us>

From: Bruce Momjian <pgman@candle.pha.pa.us>
To: AgentM <agentm@themactionfaction.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2005-09-22T21:53:44Z
Lists: pgsql-hackers
AgentM wrote:
> >
> > While I'm all for COPY from views, I think I'd rather have the  
> > syntactic
> > warts than code warts. ISTM that
> >
> > CREATE TEMP VIEW some_name AS SELECT * FROM table WHERE ...;
> > COPY some_name TO stdout;
> >
> > is much uglier than
> >
> > COPY SELECT * FROM table WHERE ... TO stdout;
> 
> Or, you could just allow subqueries in COPY to disambiguate the syntax:
> 
> COPY (SELECT * FROM table WHERE i=1) TO stdout;

This is one area where I think Informix did a better job than us, though
we inherited COPY so I don't think we can fault the community.

In Informix, LOAD is linked to INSERT, and UNLOAD to SELECT, so you do:

	LOAD FROM '/datafile' [optional flags]
	INSERT INTO tab [optional columns]

and UNLOAD is:

	UNLOAD TO '/datafile' [optional flags]
	SELECT * FROM tab

where the SELECT can use a column list, where clause, joins, etc.

We could adopt something similar with COPY

	COPY FROM '/datafile' [optional flags]
	INSERT INTO tab [optional columns]

	COPY TO '/datafile' [optional flags]
	SELECT * FROM tab

and internally use the non-executor COPY code for a simple
INSERT/SELECT, and use the view/executor for more complex cases.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073