It would seem that the planner does not take into account whether the
datatypes involved have the capability to use hash aggregates or not.

sdb=# explain select query_start, current_query from pg_locks join 
stat_activity on pid = procpid where granted = true and transaction in (select 
transaction from pg_locks where granted = false);
ERROR:  could not find hash function for hash operator 716373

ssdb=# set enable_hashagg = off;
SET

ssdb=# explain select query_start, current_query from pg_locks join 
stat_activity on pid = procpid where granted = true and transaction in (select 
transaction from pg_locks where granted = false);
                                                 QUERY PLAN
------------------------------------------------------------------------------------------------------------
 Hash Join  (cost=60.79..159.12 rows=1244 width=40)
   Hash Cond: ("outer".procpid = "inner".pid)
   ->  Function Scan on stat_activity  (cost=0.00..15.00 rows=995 width=44)
         Filter: (current_query <> '<IDLE>'::text)
   ->  Hash  (cost=60.16..60.16 rows=250 width=4)
         ->  Hash Join  (cost=40.16..60.16 rows=250 width=4)
               Hash Cond: ("outer"."transaction" = "inner"."transaction")
               ->  Function Scan on pg_lock_status l  (cost=0.00..15.00 
rows=500 width=8)
                     Filter: (granted = true)
               ->  Hash  (cost=39.91..39.91 rows=100 width=4)
                     ->  Unique  (cost=37.41..39.91 rows=100 width=4)
                           ->  Sort  (cost=37.41..38.66 rows=500 width=4)
                                 Sort Key: l."transaction"
                                 ->  Function Scan on pg_lock_status l  
(cost=0.00..15.00 rows=500 width=4)
                                       Filter: (granted = false)
(15 rows)

-- 


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to