Re: express composite type literal as text

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: express composite type literal as text
Дата
Msg-id 31376.1424634472@sss.pgh.pa.us
обсуждение исходный текст
Ответ на express composite type literal as text  (Eric Hanson <elhanson@gmail.com>)
Ответы Re: express composite type literal as text
Список pgsql-general
Eric Hanson <elhanson@gmail.com> writes:
> How do I express a composite type literal as text?

The rules are given in the manual ...

> I can't use the ROW() notation, because all values need to be represented
> as text over a REST api.  But I can't seem to get the text-based syntax to
> work:

> select * from on_hand where item='("fuzzy dice",42,1.99)';

> yeilds

> ERROR:  input of anonymous composite types is not implemented

That message isn't telling you that you've got a problem with the data
syntax, it's telling you that you need to cast the literal to a named
composite data type.  This works:

# select * from on_hand where item='("fuzzy dice",42,1.99)'::inventory_item;
          item          | count
------------------------+-------
 ("fuzzy dice",42,1.99) |  1000
(1 row)

Now, I'm not too sure *why* it's making you do that --- seems like the
default assumption ought to be that the literal is the same type as
the variable it's being compared to.  Perhaps there's a bug in there,
or perhaps there's no easy way to avoid this requirement.  But that's
what the requirement is today.

            regards, tom lane


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

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: express composite type literal as text
Следующее
От: Scott Marlowe
Дата:
Сообщение: Re: Postgres architecture for multiple instances