Thread: Too many commands in a transaction

Too many commands in a transaction

From
sam
Date:
Hi
ERROR: cannot have more than 2^32-1 commands in a transaction
SQL state: 54000
Iam getting the above error when iam running my program. If iam not
wrong this error ocuurs when there are too many statements executing
in one single transaction.
But this error is occuring in a function that iam least expecting it
to occur in. The function it occurs in is as follows:
BEGIN
    resultindex := 1;

    -- Go through summedprobs, find where rnum falls, set resultindex
    FOR i IN REVERSE (array_upper(summedprobs,1)-1)..1 LOOP
        IF rnum >= summedprobs[i] AND rnum <= summedprobs[i+1] THEN
            resultindex := i;
        END IF;
    END LOOP;

    RETURN (dobs[resultindex]);
    EXCEPTION  WHEN program_limit_exceeded THEN
        RAISE NOTICE 'Exception in GETRES';
    RETURN (dobs[resultindex]);
END;

Is is beacuse of the REVERSE command? or because the program is
executiung many select and update statements?
Catching the exception isnt helping here either.Can anyone explain me
why  this error occurs and what i can do to resolve it?

Thanks
Sam

Re: Too many commands in a transaction

From
Tom Lane
Date:
sam <sam.mahindrakar@gmail.com> writes:
> ERROR: cannot have more than 2^32-1 commands in a transaction

> But this error is occuring in a function that iam least expecting it
> to occur in.

If you haven't marked the function as read-only (IMMUTABLE or STABLE)
then each statement in it counts as a command.  At least in pre-8.3
releases.  You might find that updating to 8.3 would eliminate the
need to change your code.

            regards, tom lane