Thread: How to insert zeros into a bytea column?

How to insert zeros into a bytea column?

From
Iklódi Lajos
Date:
Hello,

I'm inserting data into a bytea colunm which can contain zero bytes. It
seems that insertion stops at first zero:

gkk=# CREATE TABLE test (id int4, adat bytea);
CREATE
gkk=# insert into test (id, adat) values (1, '\100\200\000\100\200');
INSERT 164175 1
gkk=# select * from test;id | adat
----+------- 1 | @\200
(1 row)

gkk=# select get_byte(adat,1) from test;get_byte
----------     128
(1 row)

gkk=# select get_byte(adat,2) from test;
ERROR:  byteaGetByte: index 2 out of range [0..1]

How to insert in a correct way?

Thanks,
Lajos



Re: How to insert zeros into a bytea column?

From
Joe Conway
Date:
Iklódi Lajos wrote:
> Hello,
> 
> I'm inserting data into a bytea colunm which can contain zero bytes. It
> seems that insertion stops at first zero:
> 
> gkk=# CREATE TABLE test (id int4, adat bytea);
> CREATE
> gkk=# insert into test (id, adat) values (1, '\100\200\000\100\200');
> INSERT 164175 1
> gkk=# select * from test;
>  id | adat
> ----+-------
>   1 | @\200
> (1 row)

You should double up on the backslashes:

test=# CREATE TABLE test (id int4, adat bytea);
CREATE
test=# insert into test (id, adat) values (1, '\\100\\200\\000\\100\\200');
INSERT 82097 1
test=# select * from test; id |      adat
----+----------------  1 | @\200\000@\200
(1 row)

See for more info:
http://www.us.postgresql.org/users-lounge/docs/7.2/postgres/datatype-binary.html

HTH,
Joe