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...
^
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. |