From: | "Eugene E(dot)" <sad(at)bankir(dot)ru> |
---|---|
To: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
Cc: | Achilleus Mantzios <achill(at)matrix(dot)gatewaynet(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: have you feel anything when you read this ? |
Date: | 2006-03-31 06:17:00 |
Message-ID: | 442CC95C.1030700@bankir.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
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;
}
From | Date | Subject | |
---|---|---|---|
Next Message | Stephan Szabo | 2006-03-31 16:47:46 | Re: have you feel anything when you read this ? |
Previous Message | Achilleus Mantzios | 2006-03-30 10:20:23 | Re: Ugly group by problem |