"Steinar H. Gunderson" <[EMAIL PROTECTED]> 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 ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match