Thread: binary bytea

binary bytea

From
David Kitzinger ARA/SWD
Date:
I'm confused. I have a bytea column that should be binary format (right?), yet PQfformat() says it is NOT binary (I did
aninsert as such: INSERT INTO tablename values (..., '\\001\\002\\000'); ). I also tried: INSERT INTO tablename values
(...,'\\001\\002\\000'::bytea); .  

Furthermore, my client code receives via PQgetvalue() a backslashed octet string which needs to be converted back into
binarydata via PQunescapeBytea() to get the binary contents, yet the documentation under PQunescapeBytea() (section
27.3.2)says its not needed when receiving binary data (implying there is a way to get binary data). How do I
get/requestbinary data instead of text strings. My client code is connecting via TCP/IP if that makes a difference. I
alsonoted in the documentation some sample client code that converted an int4 column to binary via: ntohl() also
implyingit was in binary format to begin with. 

What's the secret? I would love to deal directly with binary data to avoid repetitious conversions to/from strings.

Thanks in advance for any advise!

    --David Kitzinger


Re: binary bytea

From
Tom Lane
Date:
David Kitzinger ARA/SWD <David.Kitzinger@ara.com> writes:
> I'm confused. I have a bytea column that should be binary format
> (right?), yet PQfformat() says it is NOT binary

The column datatype has nothing to do with whether the data is presented
in binary or textual format.  The way you determine that is by making a
query in the right way.  See for instance the resultFormat parameter of
PQexecParams.

            regards, tom lane

Re: binary bytea

From
"M. Bastin"
Date:
>How do I get/request binary data instead of text strings.

You can do this with FETCH.  Look it up in the docs for the full picture.

Marc