Thread: PQescapeBytea v 7.2.3 BUG?

PQescapeBytea v 7.2.3 BUG?

From
Reid Thompson
Date:
should    sprintf(buffer, "%c", 0x5C);    readsz = 1;    buffer2Ptr =(unsigned char *) PQescapeBytea(buffer, readsz,
&esclen);   for (ctr = 0; ctr < strlen(buffer2Ptr); ctr++)    {        printf("char[%d] is [%c]\n", ctr,
buffer2Ptr[ctr]);   }    printf("esclen is [%d]\n", esclen);    printf("buffer2Ptr is [%s]\n", buffer2Ptr); 
 


result in the following output?

char[0] is [\]
char[1] is [\]
char[2] is [\]
char[3] is [\]
esclen is [5]
buffer2Ptr is [\\\\]

OR should it result in
char[0] is [\]
char[1] is [\]
esclen is [3]
buffer2Ptr is [\\]



Re: PQescapeBytea v 7.2.3 BUG?

From
Tom Lane
Date:
Reid Thompson <reid.thompson@ateb.com> writes:
> should
>      sprintf(buffer, "%c", 0x5C);
>      readsz = 1;
>      buffer2Ptr =(unsigned char *) PQescapeBytea(buffer, readsz, &esclen);
>      for (ctr = 0; ctr < strlen(buffer2Ptr); ctr++)
>      {
>          printf("char[%d] is [%c]\n", ctr, buffer2Ptr[ctr]);
>      }
>      printf("esclen is [%d]\n", esclen);
>      printf("buffer2Ptr is [%s]\n", buffer2Ptr); 
> result in the following output?

> char[0] is [\]
> char[1] is [\]
> char[2] is [\]
> char[3] is [\]
> esclen is [5]
> buffer2Ptr is [\\\\]

Looks okay to me.  Note the 7.2 manual mistakenly claims that esclen
doesn't include the trailing null in the output.  According to the
current manual, it does.
        regards, tom lane


Re: PQescapeBytea v 7.2.3 BUG?

From
Joe Conway
Date:
Reid Thompson wrote:
> should
[...snip...]
> result in the following output?
> 
> char[0] is [\]
> char[1] is [\]
> char[2] is [\]
> char[3] is [\]
> esclen is [5]
> buffer2Ptr is [\\\\]
> 
> OR should it result in
> char[0] is [\]
> char[1] is [\]
> esclen is [3]
> buffer2Ptr is [\\]

It should result in the former:

test=# select '\\\\'::bytea as string, length('\\\\'::bytea) as length; string | length
--------+-------- \\     |      1
(1 row)


HTH,

Joe