"Steinar H. Gunderson" <sgunderson@bigfoot.com> writes:
> On Wed, Oct 26, 2005 at 07:06:15PM -0400, Tom Lane wrote:
>> AFAICS, subplan_is_hashable() is testing the same conditions in 7.4 and
>> HEAD, so this isn't clear. Want to step through it and see where it's
>> deciding not to hash?
> (gdb) print opid
> $3 = 2373
I don't think you're getting a correct reading for optup, but OID
2373 is timestamp = date:
regression=# select * from pg_operator where oid = 2373;
oprname | oprnamespace | oprowner | oprkind | oprcanhash | oprleft | oprright | oprresult | oprcom | oprnegate |
oprlsortop| oprrsortop | oprltcmpop | oprgtcmpop | oprcode | oprrest | oprjoin
---------+--------------+----------+---------+------------+---------+----------+-----------+--------+-----------+------------+------------+------------+------------+-------------------+---------+-----------
= | 11 | 10 | b | f | 1114 | 1082 | 16 | 2347 | 2376 |
2062| 1095 | 2371 | 2375 | timestamp_eq_date | eqsel | eqjoinsel
(1 row)
which is marked not hashable, quite correctly since the input datatypes
aren't even the same.
My recollection is that there was no such operator in 7.4; probably in
7.4 the IN ended up using timestamp = timestamp which is hashable.
What's not clear though is why you're getting that operator --- aren't
both sides of the IN of type "date"?
regards, tom lane