From 693aad413b16aac85fb9a4e792d84cd87778aa9e Mon Sep 17 00:00:00 2001 From: Peter Eisentraut <peter_e@gmx.net> Date: Sun, 24 Aug 2003 21:02:43 +0000 Subject: [PATCH] Change warnings for non-existing or pre-existing cursors to errors. --- doc/src/sgml/ref/close.sgml | 6 +++--- doc/src/sgml/ref/declare.sgml | 7 +++---- doc/src/sgml/ref/fetch.sgml | 4 ++-- src/backend/commands/portalcmds.c | 23 +++++++++-------------- src/backend/utils/mmgr/portalmem.c | 6 +++--- src/test/regress/expected/portals.out | 2 +- 6 files changed, 21 insertions(+), 27 deletions(-) diff --git a/doc/src/sgml/ref/close.sgml b/doc/src/sgml/ref/close.sgml index c86e945a3d..63b2f15d16 100644 --- a/doc/src/sgml/ref/close.sgml +++ b/doc/src/sgml/ref/close.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/close.sgml,v 1.15 2003/08/17 04:46:00 momjian Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/close.sgml,v 1.16 2003/08/24 21:02:42 petere Exp $ PostgreSQL documentation --> @@ -70,10 +70,10 @@ CLOSE <replaceable class="PARAMETER">cursor</replaceable> </varlistentry> <varlistentry> - <term><computeroutput>WARNING: PerformPortalClose: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found</computeroutput></term> + <term><computeroutput>ERROR: cursor "<replaceable class="PARAMETER">cursor</replaceable>" does not exist</computeroutput></term> <listitem> <para> - This warning is given if <replaceable + Message returned if <replaceable class="PARAMETER">cursor</replaceable> is not declared or has already been closed. </para> diff --git a/doc/src/sgml/ref/declare.sgml b/doc/src/sgml/ref/declare.sgml index 0aaf0dde43..14ce71f4a6 100644 --- a/doc/src/sgml/ref/declare.sgml +++ b/doc/src/sgml/ref/declare.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/declare.sgml,v 1.24 2003/05/04 02:23:16 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/declare.sgml,v 1.25 2003/08/24 21:02:42 petere Exp $ PostgreSQL documentation --> @@ -202,11 +202,10 @@ DECLARE <replaceable class="parameter">cursorname</replaceable> [ BINARY ] [ INS </varlistentry> <varlistentry> - <term><computeroutput>WARNING: Closing pre-existing portal "<replaceable class="parameter">cursorname</replaceable>"</computeroutput></term> + <term><computeroutput>ERROR: cursor "<replaceable class="parameter">cursorname</replaceable>" already exists</computeroutput></term> <listitem> <para> - This message is reported if a cursor with the same name already - exists. The previous definition is discarded. + This error occurs if a cursor with the same name already exists. </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/ref/fetch.sgml b/doc/src/sgml/ref/fetch.sgml index 305e5fc02c..05960eb2e0 100644 --- a/doc/src/sgml/ref/fetch.sgml +++ b/doc/src/sgml/ref/fetch.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/fetch.sgml,v 1.29 2003/05/04 02:23:16 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/fetch.sgml,v 1.30 2003/08/24 21:02:43 petere Exp $ PostgreSQL documentation --> @@ -281,7 +281,7 @@ where <replaceable class="PARAMETER">direction</replaceable> can be empty or one <variablelist> <varlistentry> - <term><computeroutput>WARNING: PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found</computeroutput></term> + <term><computeroutput>ERROR: cursor "<replaceable class="PARAMETER">cursor</replaceable>" does not exist</computeroutput></term> <listitem> <para> There is no cursor with the specified name. diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index c11b48db4c..27cd7503c3 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/portalcmds.c,v 1.23 2003/08/08 21:41:32 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/portalcmds.c,v 1.24 2003/08/24 21:02:43 petere Exp $ * *------------------------------------------------------------------------- */ @@ -88,10 +88,9 @@ PerformCursorOpen(DeclareCursorStmt *stmt) /* * Create a portal and copy the query and plan into its memory - * context. (If a duplicate cursor name already exists, warn and drop - * it.) + * context. */ - portal = CreatePortal(stmt->portalname, true, false); + portal = CreatePortal(stmt->portalname, false, false); oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal)); @@ -168,13 +167,10 @@ PerformPortalFetch(FetchStmt *stmt, portal = GetPortalByName(stmt->portalname); if (!PortalIsValid(portal)) { - /* FIXME: shouldn't this be an ERROR? */ - ereport(WARNING, + ereport(ERROR, (errcode(ERRCODE_UNDEFINED_CURSOR), - errmsg("portal \"%s\" does not exist", stmt->portalname))); - if (completionTag) - strcpy(completionTag, stmt->ismove ? "MOVE 0" : "FETCH 0"); - return; + errmsg("cursor \"%s\" does not exist", stmt->portalname))); + return; /* keep compiler happy */ } /* Adjust dest if needed. MOVE wants destination None */ @@ -218,11 +214,10 @@ PerformPortalClose(const char *name) portal = GetPortalByName(name); if (!PortalIsValid(portal)) { - ereport(WARNING, + ereport(ERROR, (errcode(ERRCODE_UNDEFINED_CURSOR), - errmsg("portal \"%s\" does not exist", name), - errfunction("PerformPortalClose"))); /* for ecpg */ - return; + errmsg("cursor \"%s\" does not exist", name))); + return; /* keep compiler happy */ } /* diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c index 3e51ad2b36..00bf3e23d2 100644 --- a/src/backend/utils/mmgr/portalmem.c +++ b/src/backend/utils/mmgr/portalmem.c @@ -12,7 +12,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.61 2003/08/04 02:40:08 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.62 2003/08/24 21:02:43 petere Exp $ * *------------------------------------------------------------------------- */ @@ -167,11 +167,11 @@ CreatePortal(const char *name, bool allowDup, bool dupSilent) if (!allowDup) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_CURSOR), - errmsg("portal \"%s\" already exists", name))); + errmsg("cursor \"%s\" already exists", name))); if (!dupSilent) ereport(WARNING, (errcode(ERRCODE_DUPLICATE_CURSOR), - errmsg("closing pre-existing portal \"%s\"", + errmsg("closing existing cursor \"%s\"", name))); PortalDrop(portal, false); } diff --git a/src/test/regress/expected/portals.out b/src/test/regress/expected/portals.out index 245edffe54..b8f8341898 100644 --- a/src/test/regress/expected/portals.out +++ b/src/test/regress/expected/portals.out @@ -737,4 +737,4 @@ DECLARE foo26 CURSOR WITH HOLD FOR SELECT * FROM tenk1; ROLLBACK; -- should fail FETCH FROM foo26; -WARNING: portal "foo26" does not exist +ERROR: cursor "foo26" does not exist