10#include <executor/executor.h>
11#include <utils/plancache.h>
12#include <utils/resowner.h>
37 other.owner =
nullptr;
42 operator ::ResourceOwner()
const {
return owner; }
48 ::ResourceOwner o = owner;
56 void dispose() noexcept {
57 if (owner ==
nullptr) {
63#if PG_MAJORVERSION_NUM >= 17
64 ffi_guard{::ReleaseAllPlanCacheRefsInOwner}(owner);
66 ffi_guard{::ResourceOwnerReleaseAllPlanCacheRefs}(owner);
68 ffi_guard{::ResourceOwnerDelete}(owner);
70 elog(WARNING,
"cppgres: deleting resource owner failed");
75 ::ResourceOwner owner;
92 other.estate =
nullptr;
98 estate = other.estate;
99 other.estate =
nullptr;
104 operator ::EState *()
const {
return estate; }
110 ::EState *e = estate;
118 void dispose() noexcept {
119 if (estate ==
nullptr) {
123 ffi_guard{::FreeExecutorState}(estate);
125 elog(WARNING,
"cppgres: freeing executor state failed");
RAII-managed executor state (EState)
Definition: resource_owner.hpp:85
::EState * release() noexcept
Disown the executor state and return it.
Definition: resource_owner.hpp:109
RAII-managed resource owner.
Definition: resource_owner.hpp:24
::ResourceOwner release() noexcept
Disown the resource owner and return it.
Definition: resource_owner.hpp:47