Re: [PATCHES] Current-stream read for psql's \copy

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: Mark Feit <mfeit+postgresql(at)notonthe(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgreSQL(dot)org>
Subject: Re: [PATCHES] Current-stream read for psql's \copy
Date: 2004-02-10 17:33:10
Message-ID: 200402101733.i1AHXA510426@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches


What do people want to do with the current \copy behavior for stdin?
Right now if you supply a file name with queries using psql -f, the copy
input is read from the terminal, not from the file.

I propose changing that so psql reads \copy input from the file so it is
consistent with COPY and is more predicable. This does eliminate use of
split input where you supply the COPY input from a program, but you
could easily do:

(echo "\copy test ..."; program) | psql test

or something like that. We would document this change in the release
notes.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> Mark Feit wrote:
> > This patch against 7.4.1's psql and the documentation adds the option
> > of reading rows from the "current" input stream (standard input, -f
> > xxx, \i xxx) during a "\copy ... from" operation in psql. The details
> > were proposed and discussed (somewhat) here:
> >
> > http://archives.postgresql.org/pgsql-hackers/2003-12/msg00687.php
> > http://archives.postgresql.org/pgsql-hackers/2004-01/msg00056.php
> >
> > After some consideration, I decided to stick with the
> > originally-proposed syntax because I couldn't come up with anything
> > that made as much sense.
> >
> > This patch also includes a change which makes the "enter data to be
> > copied..." message appear for both \copy and COPY in an interactive
> > setting.
> >
> > If there's interest, I can build a patch against the current
> > development version.
>
> Actually, I am confused by our current \copy behavior. Given the
> following file:
>
> CREATE TABLE test(x INT);
> \copy test FROM STDIN
> 444
> \.
> SELECT * FROM test;
>
> 'psql test </tmp/x' works fine, but 'psql -f /tmp/x test' hangs waiting
> for input from stdin. Why would we want STDIN to read from the terminal
> if all commands are being read from a file with -f?
>
> Reading the second URL, I see:
>
> > Peter Eisentraut declared that from that point on, stdin would be
> > whatever stream the \copy command came from. I'd like to propose a
> > variant on the "FROM" clause which makes good on Peter's declaration
> > without breaking anything already using FROM STDIN and expecting it
> > to really read from stdin. (I think this is for the better because
> > there are lots of good uses for "psql -f foo.sql < foo.dat".)
>
> I agree with Peter stdin should be where ever the commands are coming
> from. I don't see any value to keeping backward compatibility for such
> strange behavior, and adding another flag to give the reasonable
> behavior seems wrong too.
>
> I propose we just fix this and document it in the release notes. Heck,
> COPY and \copy should behave the same in determining STDIN, and right
> now they don't.
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
> + If your life is a hard drive, | 13 Roberts Road
> + Christ can be your backup. | Newtown Square, Pennsylvania 19073
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2004-02-10 17:36:32 Re: [PATCHES] Current-stream read for psql's \copy
Previous Message Bruce Momjian 2004-02-10 17:28:47 Re: [PATCHES] Current-stream read for psql's \copy

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2004-02-10 17:36:32 Re: [PATCHES] Current-stream read for psql's \copy
Previous Message Bruce Momjian 2004-02-10 17:28:47 Re: [PATCHES] Current-stream read for psql's \copy