psql and COPY BINARY
Examining why psql won't do sensible stuff with COPY BINARY, I realized
that psql still uses PQgetline, which is marked obsolete since 7.4.
Is this intentional or just a "never reviewed because it works"?
Unfortunately, psql/copy.c also states "if you want to use copy in your
app, this is the code to steal". Seems not a good template code any more.
Regards,
Andreas
Andreas Pflug <pgadmin@pse-consulting.de> writes:
Examining why psql won't do sensible stuff with COPY BINARY, I realized
that psql still uses PQgetline, which is marked obsolete since 7.4.
Is this intentional or just a "never reviewed because it works"?
There wasn't any obvious bang for the buck in rewriting it.
regards, tom lane
Tom Lane wrote:
Andreas Pflug <pgadmin@pse-consulting.de> writes:
Examining why psql won't do sensible stuff with COPY BINARY, I realized
that psql still uses PQgetline, which is marked obsolete since 7.4.
Is this intentional or just a "never reviewed because it works"?There wasn't any obvious bang for the buck in rewriting it.
Well a non-binary copy could take as much as 5 times as much as a binary
copy. I hit this when COPYing 1.5GB of data, getting a 6.6GB file. This
made the 100MBit LAN connection a bottleneck.
I might post a patch to support BINARY in psql some day.
Regards,
Andreas
Andreas Pflug <pgadmin@pse-consulting.de> writes:
Tom Lane wrote:
There wasn't any obvious bang for the buck in rewriting it.
Well a non-binary copy could take as much as 5 times as much as a binary
copy. I hit this when COPYing 1.5GB of data, getting a 6.6GB file. This
made the 100MBit LAN connection a bottleneck.
Or vice versa --- the binary format is *not* necessarily smaller than text.
As an example, an integer column that contains only small values (say 1
or 2 digits) will need 8 bytes as binary and only 2 or 3 as text.
Fixing psql to handle binary copy isn't an unreasonable thing to do,
but I can't get real excited about it either ...
regards, tom lane
Tom Lane wrote:
Andreas Pflug <pgadmin@pse-consulting.de> writes:
Tom Lane wrote:
There wasn't any obvious bang for the buck in rewriting it.
Well a non-binary copy could take as much as 5 times as much as a binary
copy. I hit this when COPYing 1.5GB of data, getting a 6.6GB file. This
made the 100MBit LAN connection a bottleneck.Or vice versa --- the binary format is *not* necessarily smaller than text.
As an example, an integer column that contains only small values (say 1
or 2 digits) will need 8 bytes as binary and only 2 or 3 as text.Fixing psql to handle binary copy isn't an unreasonable thing to do,
but I can't get real excited about it either ...
Having a choice can't be too bad.
A COMPRESSED option would be even better, but that's backend stuff (does
TOAST use an algorithm that's platform independent?). Would have reduced
the sample above to about 130MB.
Regards,
Andreas
I submitted a patch a while back to change that but I withdrew it
because I wasn't 100% confident I'd done it right.
Here is the link to it:
http://archives.postgresql.org/pgsql-patches/2005-03/msg00242.php
It's probably 99% there - just a bit of checking.
Chris
Andreas Pflug wrote:
Show quoted text
Examining why psql won't do sensible stuff with COPY BINARY, I realized
that psql still uses PQgetline, which is marked obsolete since 7.4.
Is this intentional or just a "never reviewed because it works"?
Unfortunately, psql/copy.c also states "if you want to use copy in your
app, this is the code to steal". Seems not a good template code any more.Regards,
Andreas---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
Examining why psql won't do sensible stuff with COPY BINARY, I realized
that psql still uses PQgetline, which is marked obsolete since 7.4.
Is this intentional or just a "never reviewed because it works"?There wasn't any obvious bang for the buck in rewriting it.
The obvious one (and why I submitted a patch - see previous email) was
for people who use the psql source code as sample code, which is what I
was doing at the time for PHP 5.1's PostgreSQL module.
Chris
Tom Lane wrote:
Andreas Pflug <pgadmin@pse-consulting.de> writes:
Examining why psql won't do sensible stuff with COPY BINARY, I realized
that psql still uses PQgetline, which is marked obsolete since 7.4.
Is this intentional or just a "never reviewed because it works"?There wasn't any obvious bang for the buck in rewriting it.
We have a TODO:
o Update pg_dump and psql to use the new COPY libpq API
(Christopher)
--
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