Обсуждение: PQescapeBytea v 7.2.3 BUG?

Поиск
Список
Период
Сортировка

PQescapeBytea v 7.2.3 BUG?

От
Reid Thompson
Дата:
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?

От
Tom Lane
Дата:
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?

От
Joe Conway
Дата:
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