Re: express composite type literal as text - Mailing list pgsql-general

From Tom Lane
Subject Re: express composite type literal as text
Date
Msg-id 31376.1424634472@sss.pgh.pa.us
Whole thread Raw
In response to express composite type literal as text  (Eric Hanson <elhanson@gmail.com>)
Responses Re: express composite type literal as text
List 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 by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: express composite type literal as text
Next
From: Scott Marlowe
Date:
Subject: Re: Postgres architecture for multiple instances