Обсуждение: PQputline in BINARY mode?

Поиск
Список
Период
Сортировка

PQputline in BINARY mode?

От
pacquet@newsguy.com
Дата:
OK, I've tested both a

COPY BINARY <table> FROM <file>

which was very fast, and now I've also done:


PQputline(conn, <test ascii string>)


the question is, can I combine both techniques, and use a programmatic
interface to copy binary information?  We have an data collection application
which needs to insert a huge amount of (binary) information very quickly, so
I'm interested in squeezing out every last CPU cycle.  (any other tips you
have will also be appreciated).  Thanks



Re: PQputline in BINARY mode?

От
Tom Lane
Дата:
pacquet@newsguy.com writes:
> the question is, can I combine both techniques, and use a programmatic
> interface to copy binary information?

Nope.  There's no support for binary COPY in the frontend/backend
protocol.  This is one of the things I'd like to see fixed next time
we change the protocol.  (That's a sufficiently painful thing that we
don't do it often --- the last time was release 6.4 --- but we're
considering a protocol rev for the next development cycle, 7.4.)
        regards, tom lane


Re: PQputline in BINARY mode?

От
pacquet@newsguy.com
Дата:
Thanks.  Now I realize what should have been obvious:  the command "COPY
BINARY" is being executed by the backend, while PQputline() is a frontend
routine. Duh.

However, this is an embedded system, so some modest amount of backend-hacking
is quite acceptable if the payoff is large enough. Do you have any pointers on
implementing a variant of COPY BINARY <> FROM file that works out of memory
instead of a file?



At Tue, 13 Aug 2002 17:53:44 -0400, you wrote
>pacquet@newsguy.com writes:
>> the question is, can I combine both techniques, and use a programmatic
>> interface to copy binary information?
>
>Nope.  There's no support for binary COPY in the frontend/backend
>protocol.  This is one of the things I'd like to see fixed next time
>we change the protocol.  (That's a sufficiently painful thing that we
>don't do it often --- the last time was release 6.4 --- but we're
>considering a protocol rev for the next development cycle, 7.4.)
>
>            regards, tom lane
>



Re: PQputline in BINARY mode?

От
Tom Lane
Дата:
pacquet@newsguy.com writes:
> However, this is an embedded system, so some modest amount of
> backend-hacking is quite acceptable if the payoff is large enough. Do
> you have any pointers on implementing a variant of COPY BINARY <> FROM
> file that works out of memory instead of a file?

I think what you want is to hack the fe/be protocol so you can pass
binary data in the COPY from stdin/to stdout datastream.  The problem is
that the message protocol for COPY is ASCII strings (ugh).  Change it to
be counted strings and away you go.  (There are more changes that I want
to see in this area than that, but that should get you the functionality
you want...)  backend/commands/copy.c and PQgetline/PQputline on the
frontend side are the things to look at.  Also read the SGML docs'
chapter about the fe/be protocol.
        regards, tom lane