| 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: | Whole Thread | Raw Message | 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 |