Re: Alternative to \copy in psql modelled after \g
Daniel Verite <daniel@manitou-mail.org>
From: "Daniel Verite" <daniel@manitou-mail.org>
To: "PostgreSQL Hackers" <pgsql-hackers@lists.postgresql.org>
Cc: "David G. Johnston" <david.g.johnston@gmail.com>
Date: 2018-12-16T14:06:30Z
Lists: pgsql-hackers
Attachments
- psql-copyout-g.patch (text/plain) patch
I wrote: > I admit that if we could improve \g to handle COPY, it would be more > elegant than the current proposal adding two meta-commands. > > But the copy-workflow and non-copy-workflow are different, and in > order to know which one to start, \g would need to analyze the query It turns out I was wrong on this. The workflows are different but when psql receives the first PGresult, it's still time to handle the I/O redirection. It just differs from \copy in the case of an error: \copy won't even send a command to the server if the local output stream can't be opened, whereas COPY \g would send the command, and will have to deal with the client-side error afterwards. Well, except that up to now, COPY ... TO STDOUT \g file or \g |command has been ignoring "file" or "|command", which is arguably a bug as Tom puts it in another discussion in [1]. So as a replacement for the \copyto I was proposing earlier, PFA a patch for COPY TO STDOUT to make use of the argument to \g. [1] bug #15535 https://www.postgresql.org/message-id/6309.1544031175@sss.pgh.pa.us Best regards, -- Daniel Vérité PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite
Commits
-
Fix psql's "\g target" meta-command to work with COPY TO STDOUT.
- cda1e27fb706 9.5.16 landed
- ae4c7d5ab886 9.6.12 landed
- 8e97a97b3206 10.7 landed
- 6d3ede5f1c65 12.0 landed
- 2c50c9f23d1d 11.2 landed