Hello,

the following function takes forever to execute as is. I see 'Inserting original actions in temporary table' and nothing after that. If i replace orig_user_id in the FOR loop with 1811 (the same orig_user_id passed as the function parameter) it returns immediately correctly (the table has indices so it's very fast). I am using postgres 8.4.6 on linux (amd64).


CREATE OR REPLACE FUNCTION validate_test_session(orig_user_id bigint, orig_start_date timestamp without time zone, orig_end_date timestamp without time zone)
  RETURNS boolean AS
$BODY$DECLARE
orig_action RECORD;
action_counter BIGINT;
ignored_games INTEGER[];
BEGIN

ignored_games := ARRAY[1,2,7,10,17];

/* Populate tables for test */

/* Populate original session actions */
RAISE NOTICE 'Inserting original actions in temporary table';
action_counter := 0;

FOR orig_action IN (SELECT game_tables.game_type_id, game_round_actions.table_id, game_round_actions.round_id,
      action_time, action_desc, action_area, amount,
      action_value, seat_id, action_id
FROM game_round_actions INNER JOIN game_tables ON game_round_actions.table_id = game_tables.table_id WHERE game_round_actions.user_id = orig_user_id AND game_round_actions.sub_action_id = 0 AND game_round_actions.action_time BETWEEN orig_start_date AND orig_end_date AND game_tables.game_type_id <> ANY(ignored_games) ORDER BY action_time, action_id, sub_action_id)

LOOP

RAISE NOTICE 'Found action %', action_counter;

action_counter := action_counter + 1;
END LOOP;

RETURN TRUE;

END;$BODY$
LANGUAGE plpgsql VOLATILE;

--
Regards,

Nicos Panayides
IT Manager

Magneta Technologies Ltd
Tel: +357 22721919, 22317400
Fax: +357 22721917
Web: http://www.magneta.eu


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to