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)));