Re: Bug #467: Can't insert a value of 0 (zero) into a Bytea

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Bug #467: Can't insert a value of 0 (zero) into a Bytea
Дата
Msg-id 200109262008.f8QK88425643@candle.pha.pa.us
обсуждение исходный текст
Ответ на Bug #467: Can't insert a value of 0 (zero) into a Bytea type.  (pgsql-bugs@postgresql.org)
Список pgsql-bugs
This is fixed in the current CVS tree.

> Billy G. Allie (Bill.Allie@mug.org) reports a bug with a severity of 2
> The lower the number the more severe it is.
>
> Short Description
> Can't insert a value of 0 (zero) into a Bytea type.
>
> Long Description
> It does not zeem possible to insert a value of zero (0) into a bytea type.  Also, using '\134' (the octal code for a
backslash)causes byteain() to generate an error message. 
>
> As a side issue, how can one tell a backslash followed by 3 digits (four bytes of data) from an encoded byte of data?
It seems to me that byteaout() should always output an octal escape sequence per byte, even if the character is
printable. That way the result is unambiguous in meaning (even if it is wasteful of bytes). 
>
> Sample Code
> bga=# select version();
>                           version
> -----------------------------------------------------------
>  PostgreSQL 7.1.3 on i586-sco-sysv5uw7.1.1, compiled by cc
> (1 row)
> bga=# create table test6 (a bytea);
> CREATE
> bga=# insert into test6 values('\001\002\354ab\000de\004');
> INSERT 163734 1
> bga=# select * from test6;
>        a
> ----------------
>  \001\002\354ab
> (1 row)
>
> Note: It is possible to workaround (i.e. fake out postgresSQL) by inserting a backslash followsd by 3 zeros (a total
of4 bytes) into the bytea type.  For example: 
>
> bga=# insert into test6 values('\001\002\354ab\\000de\004');
> INSERT 163735 1
> bga=# select * from test6;
>             a
> --------------------------
>  \001\002\354ab
>  \001\002\354ab\000de\004
> (2 rows)
>
> This also illustrates another problem with bytea types.  How does one tell the difference between a backslash
followedby 3 digits (four bytes of data) for an encoded (single) byte of data? 
>
> The problem with using '\134' as input to a bytea field is illustrated here:
>
> bga=# insert into test6 values('\134');
> ERROR:  Bad input string for type bytea
> bga=#
>
>
> No file was uploaded with this report
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "Mike Rogers"
Дата:
Сообщение: Re: PostgreSQL / PHP Overrun Error
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Clustering error with present CVS