SPI_result_code_string(SPI_result));
cursor = cstr2sv(portal->name);
+ PinPortal(portal);
+
/* Commit the inner transaction, return to outer xact context */
ReleaseCurrentSubTransaction();
MemoryContextSwitchTo(oldcontext);
SPI_cursor_fetch(p, true, 1);
if (SPI_processed == 0)
{
+ UnpinPortal(p);
SPI_cursor_close(p);
row = &PL_sv_undef;
}
p = SPI_cursor_find(cursor);
if (p)
+ {
+ UnpinPortal(p);
SPI_cursor_close(p);
+ }
}
SV *
cursor = cstr2sv(portal->name);
+ PinPortal(portal);
+
/* Commit the inner transaction, return to outer xact context */
ReleaseCurrentSubTransaction();
MemoryContextSwitchTo(oldcontext);
cursor->portalname = MemoryContextStrdup(cursor->mcxt, portal->name);
+ PinPortal(portal);
+
PLy_spi_subtransaction_commit(oldcontext, oldowner);
}
PG_CATCH();
cursor->portalname = MemoryContextStrdup(cursor->mcxt, portal->name);
+ PinPortal(portal);
+
PLy_spi_subtransaction_commit(oldcontext, oldowner);
}
PG_CATCH();
portal = GetPortalByName(cursor->portalname);
if (PortalIsValid(portal))
+ {
+ UnpinPortal(portal);
SPI_cursor_close(portal);
+ }
cursor->closed = true;
}
if (cursor->mcxt)
return NULL;
}
+ UnpinPortal(portal);
SPI_cursor_close(portal);
cursor->closed = true;
}