38 #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode) \
39 { name, redo, desc, identify, startup, cleanup, mask, decode },
51 for (
int rmid = 0; rmid <=
RM_MAX_ID; rmid++)
67 for (
int rmid = 0; rmid <=
RM_MAX_ID; rmid++)
85 errhint(
"Include the extension module that implements this resource manager in shared_preload_libraries.")));
102 errhint(
"Provide a non-empty name for the custom resource manager.")));
106 errhint(
"Provide a custom resource manager ID between %d and %d.",
111 (
errmsg(
"failed to register custom resource manager \"%s\" with ID %d", rmgr->
rm_name, rmid),
112 errdetail(
"Custom resource manager must be registered while initializing modules in shared_preload_libraries.")));
116 (
errmsg(
"failed to register custom resource manager \"%s\" with ID %d", rmgr->
rm_name, rmid),
117 errdetail(
"Custom resource manager \"%s\" already registered with the same ID.",
121 for (
int existing_rmid = 0; existing_rmid <=
RM_MAX_ID; existing_rmid++)
128 (
errmsg(
"failed to register custom resource manager \"%s\" with ID %d", rmgr->
rm_name, rmid),
129 errdetail(
"Existing resource manager with ID %d has the same name.", existing_rmid)));
135 (
errmsg(
"registered custom resource manager \"%s\" with ID %d",
143 #define PG_GET_RESOURCE_MANAGERS_COLS 3
150 for (
int rmid = 0; rmid <=
RM_MAX_ID; rmid++)
static Datum values[MAXATTR]
#define CStringGetTextDatum(s)
int errdetail(const char *fmt,...)
int errhint(const char *fmt,...)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags)
bool process_shared_preload_libraries_in_progress
int pg_strcasecmp(const char *s1, const char *s2)
static Datum BoolGetDatum(bool X)
static Datum Int32GetDatum(int32 X)
RmgrData RmgrTable[RM_MAX_ID+1]
#define PG_GET_RESOURCE_MANAGERS_COLS
void RmgrNotFound(RmgrId rmid)
Datum pg_get_wal_resource_managers(PG_FUNCTION_ARGS)
void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr)
static bool RmgrIdIsCustom(int rmid)
static bool RmgrIdIsBuiltin(int rmid)
void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, Datum *values, bool *isnull)
static RmgrData GetRmgr(RmgrId rmid)
static bool RmgrIdExists(RmgrId rmid)