From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Zíka Aleš, Ing(dot)" <Ales(dot)Zika(at)pel(dot)br(dot)ds(dot)mfcr(dot)cz> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: Bug in SQL function with returntype void |
Date: | 2003-06-12 17:30:58 |
Message-ID: | 19595.1055439058@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
=?iso-8859-2?Q?=22Z=EDka_Ale=B9=2C_Ing=2E=22?= <Ales(dot)Zika(at)pel(dot)br(dot)ds(dot)mfcr(dot)cz> writes:
> I tried the example "CREATE FUNCTION clean_EMP () RETURNS void AS
> 'DELETE FROM EMP WHERE EMP.salary <= 0' LANGUAGE SQL;" in chapter 9.2.1 of
> Programmer's guide.
> When the function was invoked, it delete only one tuple, although
> there were more tuples satisfying the WHERE condition. During secont
> invocation it deleted next tuple and so on.
Good catch. I've applied the attached patch.
regards, tom lane
*** src/backend/executor/functions.c.orig Wed Sep 4 16:31:18 2002
--- src/backend/executor/functions.c Thu Jun 12 13:26:12 2003
***************
*** 273,289 ****
if (es->qd->operation == CMD_UTILITY)
{
- /*
- * Process a utility command. (create, destroy...) DZ - 30-8-1996
- */
ProcessUtility(es->qd->parsetree->utilityStmt, es->qd->dest, NULL);
- if (!LAST_POSTQUEL_COMMAND(es))
- CommandCounterIncrement();
return (TupleTableSlot *) NULL;
}
! /* If it's not the last command, just run it to completion */
! count = (LAST_POSTQUEL_COMMAND(es)) ? 1L : 0L;
return ExecutorRun(es->qd, es->estate, ForwardScanDirection, count);
}
--- 273,291 ----
if (es->qd->operation == CMD_UTILITY)
{
ProcessUtility(es->qd->parsetree->utilityStmt, es->qd->dest, NULL);
return (TupleTableSlot *) NULL;
}
! /*
! * If it's the function's last command, and it's a SELECT, fetch one
! * row at a time so we can return the results. Otherwise just run it
! * to completion.
! */
! if (LAST_POSTQUEL_COMMAND(es) && es->qd->operation == CMD_SELECT)
! count = 1L;
! else
! count = 0L;
return ExecutorRun(es->qd, es->estate, ForwardScanDirection, count);
}
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2003-06-12 17:33:28 | Re: Bug in SQL function with returntype void |
Previous Message | Dmitry Tkach | 2003-06-12 16:49:05 | Re: pg_dumpall not working in batch |