From: Andy Shellam <andy-lists@networkmail.eu>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-sql@postgresql.org
Subject: Re: Storing null bytes in bytea
Date: Tue, 28 Apr 2009 17:48:56 +0100
Message-ID: <49F73378.7000100@networkmail.eu> (raw)
In-Reply-To: <11364.1240864149@sss.pgh.pa.us>
References: <49F5F02A.1070505@networkmail.eu>
<11364.1240864149@sss.pgh.pa.us>
Hi Tom,
> Your example works fine in psql:
>
> regression=# create table t1 (f1 bytea);
> CREATE TABLE
> regression=# insert into t1 values (E'IsLoggedIn|b:1;CurrentUser|O:17:"Class_SystemUser":4:{s:26:"\\000Class_SystemUser}'::bytea);
> INSERT 0 1
> regression=# select * from t1;
> f1
> -----------------------------------------------------------------------------------
> IsLoggedIn|b:1;CurrentUser|O:17:"Class_SystemUser":4:{s:26:"\000Class_SystemUser}
> (1 row)
>
>
> I suspect what is happening is that some layer on the client side is
> doubling (or perhaps undoubling?) the backslashes for you. Exactly
> what are you doing with that literal as you build the query? It might
> help to turn on log_statements so that you can see just what the
> server is getting.
>
Many thanks for your reply. I was a bit naive about the quality of the
client I was using (Navicat 8.1.) It turns out in the "Memo" view it
doesn't show anything past the first zero byte. However switch it to
hex view and you see the full bytes.
I think my issue that it wasn't working on the client side (and caused
me to examine it in more detail in the database) was because it wasn't
unescaping correctly in the application code when it read the data back
out of the database.
Next time I won't be so lazy and try it out in psql first...
Regards,
Andy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: andy-lists@networkmail.eu, tgl@sss.pgh.pa.us
Subject: Re: Storing null bytes in bytea
In-Reply-To: <49F73378.7000100@networkmail.eu>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox