From: Tom Lane Date: Thu, 12 Jun 2003 17:29:26 +0000 (+0000) Subject: Fix SQL function executor for case where last command of a function is X-Git-Tag: REL7_4_BETA1~422 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cc2fc4a71b95cbe2c36707467cfdc10b34f95d80;p=thirdparty%2Fpostgresql.git Fix SQL function executor for case where last command of a function is not a SELECT. We didn't use to allow that, but we do now. --- diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c index 46d1e51c4b9..a0e0919fd0b 100644 --- a/src/backend/executor/functions.c +++ b/src/backend/executor/functions.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/functions.c,v 1.65 2003/05/08 18:16:36 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/functions.c,v 1.66 2003/06/12 17:29:26 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -262,17 +262,19 @@ postquel_getnext(execution_state *es) 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; + /* + * 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, ForwardScanDirection, count); }