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

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Rafał Rzepecki <divided(dot)mind(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org, Amit Kapila <amit(dot)kapila(at)huawei(dot)com>
Subject: Re: BUG #8198: ROW() literals not supported in an IN clause
Date: 2013-06-09 22:44:08
Message-ID: 15015.1370817848@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

=?UTF-8?Q?Rafa=C5=82_Rzepecki?= <divided(dot)mind(at)gmail(dot)com> writes:
> I'm pretty sure the original intent was to afford some extra checks so
> that conditions such as "ROW(1, 2) IN ((ROW(3, 4), ROW(5, 6, 7))"
> would get rejected at parsing time (CCing the original author; please
> confirm).

No; the reason it was like that was that when that code was written,
make_row_comparison_op was the only way to compare two row values at
all. We didn't have record_eq and friends; nor did we have arrays
of composites.

> Since the restriction seems a rather arbitrary (at least I fail to see
> any reason for it), it can be removed altogether (patch 0002, not
> tested as well):

This is reasonable as far as it goes, but I think it doesn't go far
enough --- there's really no reason anymore to reject RowExprs as
components of ScalarArrayOpExpr either. I've extended this patch
some and committed it. Thanks for the report!

regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Gunnlaugur Thor Briem 2013-06-10 13:28:32 pg_dump is O(N) in DB table count N even if dumping only one table
Previous Message matt7416 2013-06-09 18:30:49 BUG #8219: Windows installer fails when username contains spaces