BUG #10052: COPY (...) TO 'file' doesn't create file

From: postgresql(dot)org(at)ch(dot)pkts(dot)ca
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #10052: COPY (...) TO 'file' doesn't create file
Date: 2014-04-16 17:54:36
Message-ID: 20140416175436.17202.83628@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 10052
Logged by: PFudd
Email address: postgresql(dot)org(at)ch(dot)pkts(dot)ca
PostgreSQL version: 9.2.8
Operating system: CentOS 6.5
Description:

In psql, this command works:
# copy (select * from history) to STDOUT;
It prints 957 lines to stdout.

However, if I do:
# copy (select * from history) to '/tmp/foo.txt';
it prints
COPY 957
but doesn't create the file /tmp/foo.txt.

If the filename is changed to 'foo.txt' it says:
ERROR: relative path not allowed for COPY to file
so we know that it's at least looking at the filename critically.

If the filename is changed to /tmp/foo.txt without the single quotes, it
says:
ERROR: syntax error at or near "/"
as expected.

It doesn't matter if I'm doing this as a regular user or as the root user.

Using strace, it can be seen there was no attempt to stat or open that
filename for writing:

# env PGPASSWORD=password strace -fo/tmp/strace.log psql -h 1.2.3.4 -U
username -c "copy (select * from history where num=5) to '/tmp/foo.txt'"
analyzer_local

# cat /tmp/foo.txt
cat: /tmp/foo.txt: No such file or directory

# grep -c foo.txt /tmp/strace.log
0

This was tried with psql 9.2.8 and psql 9.1.13, connecting to a server
running 9.2.4.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Bruce Momjian 2014-04-16 17:55:01 Re: BUG #8842: lo_open/fastpath transaction inconsistency
Previous Message greenreaper 2014-04-16 17:19:20 BUG #10051: Documentation should explain use of LOWER(X) text_pattern_ops indexes with LIKE to replace ILIKE