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;
 }

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to