Hi, On Wednesday 06 December 2006 16:44, Richard Ray wrote: | select count(*) from documents where doc_num = '106973821' and (select | bit_or(group_access) from mda_groups where group_name in (select groname | from pg_user,pg_group where usename = 'bbob' and usesysid = any(grolist) | and (groname ~ '.*owner$' or groname = 'admin'))) & access > | '0'::bit(100); | | returns very fast | | If I create function | | create or replace function check_for_update_permission(text,text) returns | boolean as ' | declare | doc_number alias for $1; | user alias for $2; | doc_count integer; | begin ... | end; | ' language 'plpgsql'; | | | and run "select check_for_update_permission('106973821','bbob');" | it returns the correct info but takes several minutes | Would someone please enlighten me. | Can you do something like explain analyze on a function
Just a guess: is the column "doc_num" really of type text? Maybe using "text" in the function lets the planner choose a sequential scan? I'd try putting a "raise notice '%', explain analyze ..." statement into the function and check the log file. Ciao, Thomas -- Thomas Pundt <[EMAIL PROTECTED]> ---- http://rp-online.de/ ---- ---------------------------(end of broadcast)--------------------------- TIP 1: 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