The following bug has been logged on the website: Bug reference: 8198 Logged by: Rafal Rzepecki Email address: divided.m...@gmail.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... ^ -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs