Thread: pga_next_schedule function bug

pga_next_schedule function bug

From
"Glen Sasek"
Date:
When creating a schedule or running the test code in pgagent.sql  the
following occurs:
ERROR: syntax error at or near "IF"
CONTEXT: compile of PL/pgSQL function "pga_next_schedule" near line 161
PL/pgSQL function "pga_job_trigger" line 4 at select into variables
PL/pgSQL function "pga_schedule_trigger" line 10 at SQL statement

This can be fixed by editing the pga_next_schedule function around lines
131-163; the problem is that there is no ELSEIF keyword in the language. The
correct syntax is ELSIF.

Here's a corrected version of the block of code that is causing problems:
        -- Was the last day flag selected?
        IF nextday = 32 THEN
            IF nextmonth = 1 THEN
                nextday := 31;
            ELSIF nextmonth = 2 THEN
                IF pgagent.pga_is_leap_year(nextyear) = TRUE THEN
                    nextday := 29;
                ELSE
                    nextday := 28;
                END IF;
            ELSIF nextmonth = 3 THEN
                nextday := 31;
            ELSIF nextmonth = 4 THEN
                nextday := 30;
            ELSIF nextmonth = 5 THEN
                nextday := 31;
            ELSIF nextmonth = 6 THEN
                nextday := 30;
            ELSIF nextmonth = 7 THEN
                nextday := 31;
            ELSIF nextmonth = 8 THEN
                nextday := 31;
            ELSIF nextmonth = 9 THEN
                nextday := 30;
            ELSIF nextmonth = 10 THEN
                nextday := 31;
            ELSIF nextmonth = 11 THEN
                nextday := 30;
            ELSIF nextmonth = 12 THEN
                nextday := 31;
            ELSE
                --do nothing
            END IF;
        END IF;


Re: pga_next_schedule function bug

From
"Dave Page"
Date:

> -----Original Message-----
> From: pgadmin-hackers-owner@postgresql.org
> [mailto:pgadmin-hackers-owner@postgresql.org] On Behalf Of Glen Sasek
> Sent: 22 December 2005 23:24
> To: pgadmin-hackers@postgresql.org
> Subject: [pgadmin-hackers] pga_next_schedule function bug
>
> When creating a schedule or running the test code in pgagent.sql  the
> following occurs:
> ERROR: syntax error at or near "IF"
> CONTEXT: compile of PL/pgSQL function "pga_next_schedule"
> near line 161
> PL/pgSQL function "pga_job_trigger" line 4 at select into variables
> PL/pgSQL function "pga_schedule_trigger" line 10 at SQL statement
>
> This can be fixed by editing the pga_next_schedule function
> around lines
> 131-163; the problem is that there is no ELSEIF keyword in
> the language. The
> correct syntax is ELSIF.

Ahh, ELSEIF was added in 8.0 - didn't realise I'd used the new form.
I'll commit appropriate fixes ASAP.

Thanks for the report.

Regards, Dave.