Peter Eisentraut wrote:
> Eugene E. wrote:
>
>>the problem is: you'll get this four byte sequence '\000' _instead_
>>of NUL-byte anyway.
>
>
> What you seem to be missing is that PostgreSQL data can be represented
> in textual and in binary form. What you in psql is the textual form.
> If you want the binary form you need to select it. Then you can pass
> the exact bytes back and forth.
your sentence is not true.
I can not select exact bytes even if i use BYTEA type
the folloiwing tiny C-program shows this pretty clear
#include <stdlib.h>
#include <stdio.h>
#include "libpq-fe.h"
int
main (void) { PGconn * conn; PGresult * res; char * val; char * l; int len;
conn = PQconnectdb("user=scott password=tiger dbname=test_db");
PQexec(conn, "CREATE TABLE t (a BYTEA)"); PQexec(conn, "INSERT INTO t VALUES ('ab\\\\000cd')");
res = PQexec(conn, "SELECT a,length(a) FROM t"); val = PQgetvalue(res,0,0); l = PQgetvalue(res,0,1); len =
PQgetlength(res,0,0); printf("what_we_retrive='%s' its_value_length=%i but
orig_length=%s\n",val,len,l);
PQclear(res); PQfinish(conn);
return 0; }