]> granicus.if.org Git - postgresql/commitdiff
Give more accurate error message for dropping pinned portal
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 10 Jan 2018 14:22:07 +0000 (09:22 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 10 Jan 2018 14:22:07 +0000 (09:22 -0500)
The previous code gave the same error message for attempting to drop
pinned and active portals, but those are separate states, so give
separate error messages.

src/backend/utils/mmgr/portalmem.c

index 9edc1ccc83209e7130f1683d5da2fd37d990d6d6..84c68ac18955080d5ae2157be161b71fba78a36a 100644 (file)
@@ -464,11 +464,17 @@ PortalDrop(Portal portal, bool isTopCommit)
 
        /*
         * Don't allow dropping a pinned portal, it's still needed by whoever
-        * pinned it. Not sure if the PORTAL_ACTIVE case can validly happen or
-        * not...
+        * pinned it.
         */
-       if (portal->portalPinned ||
-               portal->status == PORTAL_ACTIVE)
+       if (portal->portalPinned)
+               ereport(ERROR,
+                               (errcode(ERRCODE_INVALID_CURSOR_STATE),
+                                errmsg("cannot drop pinned portal \"%s\"", portal->name)));
+
+       /*
+        * Not sure if the PORTAL_ACTIVE case can validly happen or not...
+        */
+       if (portal->status == PORTAL_ACTIVE)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_CURSOR_STATE),
                                 errmsg("cannot drop active portal \"%s\"", portal->name)));