BUG #8198: ROW() literals not supported in an IN clause

From: divided(dot)mind(at)gmail(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #8198: ROW() literals not supported in an IN clause
Date: 2013-06-01 16:06:37
Message-ID: E1UioKD-0007wM-Ta@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 8198
Logged by: Rafal Rzepecki
Email address: divided(dot)mind(at)gmail(dot)com
PostgreSQL version: 9.2.4
Operating system: Ubuntu 13.04
Description:

Row type literals constructed with ROW() cause an error when used in an IN
clause (string literals casted appropriately are allowed). This is
especially problematic since many client libraries use these literals to
pass values of row-type arguments, hence making it impossible to use them in
IN-clause queries.

To wit:
divide=# create type the_row as (mfg text, id text);
CREATE TYPE
divide=# create table the_table (widget the_row);


CREATE TABLE


divide=# insert into the_table values(row('foo', 'bar')::the_row);


INSERT 0 1


divide=# insert into the_table values('(bar,baz)'::the_row);


INSERT 0 1
divide=# select * from the_table;
widget
-----------
(foo,bar)
(bar,baz)
(2 rows)

divide=# select * from the_table where widget in ('(foo,bar)'::the_row);
widget
-----------
(foo,bar)
(1 row)

divide=# select * from the_table where widget in
(row('foo','bar')::the_row);
ERROR: arguments of row IN must all be row expressions
LINE 1: select * from the_table where widget in (row('foo','bar')::t...
^

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message divided.mind 2013-06-01 16:14:14 BUG #8199: row datatypes are not hashable
Previous Message Stephen Frost 2013-06-01 14:20:46 Re: BUG #8193: A few cosmetic misspell fixes.