aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/amcheck/verify_heapam.c2
-rw-r--r--contrib/dblink/dblink.c2
-rw-r--r--contrib/pageinspect/brinfuncs.c2
-rw-r--r--contrib/pageinspect/gistfuncs.c4
-rw-r--r--contrib/pg_stat_statements/pg_stat_statements.c2
-rw-r--r--contrib/pg_walinspect/pg_walinspect.c4
-rw-r--r--contrib/pgrowlocks/pgrowlocks.c2
-rw-r--r--contrib/postgres_fdw/connection.c2
-rw-r--r--contrib/xml2/xpath.c2
-rw-r--r--src/backend/access/transam/rmgr.c2
-rw-r--r--src/backend/access/transam/xlogprefetcher.c2
-rw-r--r--src/backend/commands/event_trigger.c4
-rw-r--r--src/backend/commands/extension.c6
-rw-r--r--src/backend/commands/prepare.c2
-rw-r--r--src/backend/foreign/foreign.c2
-rw-r--r--src/backend/replication/logical/launcher.c2
-rw-r--r--src/backend/replication/logical/logicalfuncs.c2
-rw-r--r--src/backend/replication/logical/origin.c2
-rw-r--r--src/backend/replication/slotfuncs.c2
-rw-r--r--src/backend/replication/walsender.c2
-rw-r--r--src/backend/storage/ipc/shmem.c2
-rw-r--r--src/backend/utils/adt/datetime.c2
-rw-r--r--src/backend/utils/adt/genfile.c4
-rw-r--r--src/backend/utils/adt/hbafuncs.c4
-rw-r--r--src/backend/utils/adt/jsonfuncs.c9
-rw-r--r--src/backend/utils/adt/mcxtfuncs.c2
-rw-r--r--src/backend/utils/adt/misc.c2
-rw-r--r--src/backend/utils/adt/pgstatfuncs.c6
-rw-r--r--src/backend/utils/adt/varlena.c2
-rw-r--r--src/backend/utils/fmgr/README2
-rw-r--r--src/backend/utils/fmgr/funcapi.c23
-rw-r--r--src/backend/utils/misc/guc_funcs.c2
-rw-r--r--src/backend/utils/misc/pg_config.c2
-rw-r--r--src/backend/utils/mmgr/portalmem.c2
-rw-r--r--src/include/funcapi.h14
-rw-r--r--src/test/modules/test_ddl_deparse/test_ddl_deparse.c2
36 files changed, 72 insertions, 58 deletions
diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c
index 83dc7280115..b72a5c96d12 100644
--- a/contrib/amcheck/verify_heapam.c
+++ b/contrib/amcheck/verify_heapam.c
@@ -278,7 +278,7 @@ verify_heapam(PG_FUNCTION_ARGS)
ctx.attnum = -1;
/* Construct the tuplestore and tuple descriptor */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
ctx.tupdesc = rsinfo->setDesc;
ctx.tupstore = rsinfo->setResult;
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 9eef417c47b..9202c358475 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -1933,7 +1933,7 @@ dblink_get_notify(PG_FUNCTION_ARGS)
else
conn = pconn->conn;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
PQconsumeInput(conn);
while ((notify = PQnotifies(conn)) != NULL)
diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c
index f4c959ecab9..12a72170385 100644
--- a/contrib/pageinspect/brinfuncs.c
+++ b/contrib/pageinspect/brinfuncs.c
@@ -147,7 +147,7 @@ brin_page_items(PG_FUNCTION_ARGS)
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser to use raw page functions")));
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
indexRel = index_open(indexRelid, AccessShareLock);
diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfuncs.c
index d0a34a33756..f15714842a6 100644
--- a/contrib/pageinspect/gistfuncs.c
+++ b/contrib/pageinspect/gistfuncs.c
@@ -127,7 +127,7 @@ gist_page_items_bytea(PG_FUNCTION_ARGS)
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser to use raw page functions")));
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
page = get_page_from_raw(raw_page);
@@ -211,7 +211,7 @@ gist_page_items(PG_FUNCTION_ARGS)
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser to use raw page functions")));
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Open the relation */
indexRel = index_open(indexRelid, AccessShareLock);
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c
index 73439c01991..e5aa429995c 100644
--- a/contrib/pg_stat_statements/pg_stat_statements.c
+++ b/contrib/pg_stat_statements/pg_stat_statements.c
@@ -1552,7 +1552,7 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("pg_stat_statements must be loaded via shared_preload_libraries")));
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/*
* Check we have the expected number of output arguments. Aside from
diff --git a/contrib/pg_walinspect/pg_walinspect.c b/contrib/pg_walinspect/pg_walinspect.c
index 38fb4106da4..beba4788c73 100644
--- a/contrib/pg_walinspect/pg_walinspect.c
+++ b/contrib/pg_walinspect/pg_walinspect.c
@@ -330,7 +330,7 @@ GetWALRecordsInfo(FunctionCallInfo fcinfo, XLogRecPtr start_lsn,
Datum values[PG_GET_WAL_RECORDS_INFO_COLS] = {0};
bool nulls[PG_GET_WAL_RECORDS_INFO_COLS] = {0};
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
xlogreader = InitXLogReaderState(start_lsn);
@@ -548,7 +548,7 @@ GetWalStats(FunctionCallInfo fcinfo, XLogRecPtr start_lsn,
Datum values[PG_GET_WAL_STATS_COLS] = {0};
bool nulls[PG_GET_WAL_STATS_COLS] = {0};
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
xlogreader = InitXLogReaderState(start_lsn);
diff --git a/contrib/pgrowlocks/pgrowlocks.c b/contrib/pgrowlocks/pgrowlocks.c
index 1d4d4965ac9..c543277b7c5 100644
--- a/contrib/pgrowlocks/pgrowlocks.c
+++ b/contrib/pgrowlocks/pgrowlocks.c
@@ -75,7 +75,7 @@ pgrowlocks(PG_FUNCTION_ARGS)
AclResult aclresult;
char **values;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Access the table */
relrv = makeRangeVarFromNameList(textToQualifiedNameList(relname));
diff --git a/contrib/postgres_fdw/connection.c b/contrib/postgres_fdw/connection.c
index 939d114f02e..f0c45b00db8 100644
--- a/contrib/postgres_fdw/connection.c
+++ b/contrib/postgres_fdw/connection.c
@@ -1668,7 +1668,7 @@ postgres_fdw_get_connections(PG_FUNCTION_ARGS)
HASH_SEQ_STATUS scan;
ConnCacheEntry *entry;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* If cache doesn't exist, we return no records */
if (!ConnectionHash)
diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c
index b8ee757674d..a692dc6be86 100644
--- a/contrib/xml2/xpath.c
+++ b/contrib/xml2/xpath.c
@@ -511,7 +511,7 @@ xpath_table(PG_FUNCTION_ARGS)
PgXmlErrorContext *xmlerrcxt;
volatile xmlDocPtr doctree = NULL;
- SetSingleFuncCall(fcinfo, SRF_SINGLE_USE_EXPECTED);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC);
/* must have at least one output column (for the pkey) */
if (rsinfo->setDesc->natts < 1)
diff --git a/src/backend/access/transam/rmgr.c b/src/backend/access/transam/rmgr.c
index 3b6de3aa04e..6bb4de387f3 100644
--- a/src/backend/access/transam/rmgr.c
+++ b/src/backend/access/transam/rmgr.c
@@ -145,7 +145,7 @@ pg_get_wal_resource_managers(PG_FUNCTION_ARGS)
Datum values[PG_GET_RESOURCE_MANAGERS_COLS];
bool nulls[PG_GET_RESOURCE_MANAGERS_COLS] = {0};
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
for (int rmid = 0; rmid <= RM_MAX_ID; rmid++)
{
diff --git a/src/backend/access/transam/xlogprefetcher.c b/src/backend/access/transam/xlogprefetcher.c
index 1cbac4b7f6f..0cf03945eec 100644
--- a/src/backend/access/transam/xlogprefetcher.c
+++ b/src/backend/access/transam/xlogprefetcher.c
@@ -834,7 +834,7 @@ pg_stat_get_recovery_prefetch(PG_FUNCTION_ARGS)
Datum values[PG_STAT_GET_RECOVERY_PREFETCH_COLS];
bool nulls[PG_STAT_GET_RECOVERY_PREFETCH_COLS];
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
for (int i = 0; i < PG_STAT_GET_RECOVERY_PREFETCH_COLS; ++i)
nulls[i] = false;
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 441f29d684f..8d36b664880 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -1305,7 +1305,7 @@ pg_event_trigger_dropped_objects(PG_FUNCTION_ARGS)
"pg_event_trigger_dropped_objects()")));
/* Build tuplestore to hold the result rows */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
slist_foreach(iter, &(currentEventTriggerState->SQLDropList))
{
@@ -1832,7 +1832,7 @@ pg_event_trigger_ddl_commands(PG_FUNCTION_ARGS)
"pg_event_trigger_ddl_commands()")));
/* Build tuplestore to hold the result rows */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
foreach(lc, currentEventTriggerState->commandList)
{
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 6b6720c6905..1a62e5dac5a 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -1946,7 +1946,7 @@ pg_available_extensions(PG_FUNCTION_ARGS)
struct dirent *de;
/* Build tuplestore to hold the result rows */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
location = get_extension_control_directory();
dir = AllocateDir(location);
@@ -2026,7 +2026,7 @@ pg_available_extension_versions(PG_FUNCTION_ARGS)
struct dirent *de;
/* Build tuplestore to hold the result rows */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
location = get_extension_control_directory();
dir = AllocateDir(location);
@@ -2281,7 +2281,7 @@ pg_extension_update_paths(PG_FUNCTION_ARGS)
check_valid_extension_name(NameStr(*extname));
/* Build tuplestore to hold the result rows */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Read the extension's control file */
control = read_extension_control_file(NameStr(*extname));
diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c
index c4b54d05475..9e29584d93e 100644
--- a/src/backend/commands/prepare.c
+++ b/src/backend/commands/prepare.c
@@ -672,7 +672,7 @@ pg_prepared_statement(PG_FUNCTION_ARGS)
* We put all the tuples into a tuplestore in one scan of the hashtable.
* This avoids any issue of the hashtable possibly changing between calls.
*/
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* hash table might be uninitialized */
if (prepared_queries)
diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c
index 353e20a0cf7..56fcb8edf17 100644
--- a/src/backend/foreign/foreign.c
+++ b/src/backend/foreign/foreign.c
@@ -517,7 +517,7 @@ pg_options_to_table(PG_FUNCTION_ARGS)
rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
/* prepare the result set */
- SetSingleFuncCall(fcinfo, SRF_SINGLE_USE_EXPECTED);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC);
foreach(cell, options)
{
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 3bbd5227241..ff57421da69 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -930,7 +930,7 @@ pg_stat_get_subscription(PG_FUNCTION_ARGS)
int i;
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Make sure we get consistent view of the workers. */
LWLockAcquire(LogicalRepWorkerLock, LW_SHARED);
diff --git a/src/backend/replication/logical/logicalfuncs.c b/src/backend/replication/logical/logicalfuncs.c
index 7fa2b2cba7f..5c231785700 100644
--- a/src/backend/replication/logical/logicalfuncs.c
+++ b/src/backend/replication/logical/logicalfuncs.c
@@ -188,7 +188,7 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
}
}
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
p->tupstore = rsinfo->setResult;
p->tupdesc = rsinfo->setDesc;
diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c
index f19b72ff351..f134e44878f 100644
--- a/src/backend/replication/logical/origin.c
+++ b/src/backend/replication/logical/origin.c
@@ -1503,7 +1503,7 @@ pg_show_replication_origin_status(PG_FUNCTION_ARGS)
/* we want to return 0 rows if slot is set to zero */
replorigin_check_prerequisites(false, true);
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* prevent slots from being concurrently dropped */
LWLockAcquire(ReplicationOriginLock, LW_SHARED);
diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c
index ca945994ef0..16a35279037 100644
--- a/src/backend/replication/slotfuncs.c
+++ b/src/backend/replication/slotfuncs.c
@@ -242,7 +242,7 @@ pg_get_replication_slots(PG_FUNCTION_ARGS)
* name, which shouldn't contain anything particularly sensitive.
*/
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
currlsn = GetXLogWriteRecPtr();
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index e9ba500a15f..2193dcaec61 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -3459,7 +3459,7 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
int num_standbys;
int i;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/*
* Get the currently active synchronous standbys. This could be out of
diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c
index c1279960cd0..10be765fb7b 100644
--- a/src/backend/storage/ipc/shmem.c
+++ b/src/backend/storage/ipc/shmem.c
@@ -543,7 +543,7 @@ pg_get_shmem_allocations(PG_FUNCTION_ARGS)
Datum values[PG_GET_SHMEM_SIZES_COLS];
bool nulls[PG_GET_SHMEM_SIZES_COLS];
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
LWLockAcquire(ShmemIndexLock, LW_SHARED);
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 74b68070984..8cd10ab204a 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -5058,7 +5058,7 @@ pg_timezone_names(PG_FUNCTION_ARGS)
Interval *resInterval;
struct pg_itm_in itm_in;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* initialize timezone scanning code */
tzenum = pg_tzenumerate_start();
diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c
index 2f1e907a10d..ab6f67f8747 100644
--- a/src/backend/utils/adt/genfile.c
+++ b/src/backend/utils/adt/genfile.c
@@ -561,7 +561,7 @@ pg_ls_dir(PG_FUNCTION_ARGS)
include_dot_dirs = PG_GETARG_BOOL(2);
}
- SetSingleFuncCall(fcinfo, SRF_SINGLE_USE_EXPECTED);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC);
dirdesc = AllocateDir(location);
if (!dirdesc)
@@ -619,7 +619,7 @@ pg_ls_dir_files(FunctionCallInfo fcinfo, const char *dir, bool missing_ok)
DIR *dirdesc;
struct dirent *de;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/*
* Now walk the directory. Note that we must do this within a single SRF
diff --git a/src/backend/utils/adt/hbafuncs.c b/src/backend/utils/adt/hbafuncs.c
index 9e5794071cd..cbbe44ff133 100644
--- a/src/backend/utils/adt/hbafuncs.c
+++ b/src/backend/utils/adt/hbafuncs.c
@@ -421,7 +421,7 @@ pg_hba_file_rules(PG_FUNCTION_ARGS)
* also more efficient than having to look up our current position in the
* parsed list every time.
*/
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Fill the tuplestore */
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
@@ -554,7 +554,7 @@ pg_ident_file_mappings(PG_FUNCTION_ARGS)
* also more efficient than having to look up our current position in the
* parsed list every time.
*/
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Fill the tuplestore */
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index fd0d355789c..bfc3f02a863 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -1921,7 +1921,7 @@ each_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
funcname)));
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
- SetSingleFuncCall(fcinfo, SRF_SINGLE_BLESS);
+ InitMaterializedSRF(fcinfo, MAT_SRF_BLESS);
tmp_cxt = AllocSetContextCreate(CurrentMemoryContext,
"jsonb_each temporary cxt",
@@ -2001,7 +2001,7 @@ each_worker(FunctionCallInfo fcinfo, bool as_text)
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
- SetSingleFuncCall(fcinfo, SRF_SINGLE_BLESS);
+ InitMaterializedSRF(fcinfo, MAT_SRF_BLESS);
state->tuple_store = rsi->setResult;
state->ret_tdesc = rsi->setDesc;
@@ -2164,8 +2164,7 @@ elements_worker_jsonb(FunctionCallInfo fcinfo, const char *funcname,
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
- SetSingleFuncCall(fcinfo,
- SRF_SINGLE_USE_EXPECTED | SRF_SINGLE_BLESS);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC | MAT_SRF_BLESS);
tmp_cxt = AllocSetContextCreate(CurrentMemoryContext,
"jsonb_array_elements temporary cxt",
@@ -2243,7 +2242,7 @@ elements_worker(FunctionCallInfo fcinfo, const char *funcname, bool as_text)
state = palloc0(sizeof(ElementsState));
sem = palloc0(sizeof(JsonSemAction));
- SetSingleFuncCall(fcinfo, SRF_SINGLE_USE_EXPECTED | SRF_SINGLE_BLESS);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC | MAT_SRF_BLESS);
rsi = (ReturnSetInfo *) fcinfo->resultinfo;
state->tuple_store = rsi->setResult;
state->ret_tdesc = rsi->setDesc;
diff --git a/src/backend/utils/adt/mcxtfuncs.c b/src/backend/utils/adt/mcxtfuncs.c
index bb7cc940249..04b7aa2a77b 100644
--- a/src/backend/utils/adt/mcxtfuncs.c
+++ b/src/backend/utils/adt/mcxtfuncs.c
@@ -121,7 +121,7 @@ pg_get_backend_memory_contexts(PG_FUNCTION_ARGS)
{
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
PutMemoryContextsStatsTupleStore(rsinfo->setResult, rsinfo->setDesc,
TopMemoryContext, NULL, 0);
diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c
index 6c45fd2007a..9c132512315 100644
--- a/src/backend/utils/adt/misc.c
+++ b/src/backend/utils/adt/misc.c
@@ -208,7 +208,7 @@ pg_tablespace_databases(PG_FUNCTION_ARGS)
DIR *dirdesc;
struct dirent *de;
- SetSingleFuncCall(fcinfo, SRF_SINGLE_USE_EXPECTED);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC);
if (tablespaceOid == GLOBALTABLESPACE_OID)
{
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 85ac3e3f04f..96bffc0f2ac 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -502,7 +502,7 @@ pg_stat_get_progress_info(PG_FUNCTION_ARGS)
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid command name: \"%s\"", cmd)));
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* 1-based index */
for (curr_backend = 1; curr_backend <= num_backends; curr_backend++)
@@ -559,7 +559,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
int pid = PG_ARGISNULL(0) ? -1 : PG_GETARG_INT32(0);
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* 1-based index */
for (curr_backend = 1; curr_backend <= num_backends; curr_backend++)
@@ -1800,7 +1800,7 @@ pg_stat_get_slru(PG_FUNCTION_ARGS)
int i;
PgStat_SLRUStats *stats;
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* request SLRU stats from the cumulative stats system */
stats = pgstat_fetch_slru();
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 1f6e0908216..c5e7ee7ca2d 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -4810,7 +4810,7 @@ text_to_table(PG_FUNCTION_ARGS)
SplitTextOutputData tstate;
tstate.astate = NULL;
- SetSingleFuncCall(fcinfo, SRF_SINGLE_USE_EXPECTED);
+ InitMaterializedSRF(fcinfo, MAT_SRF_USE_EXPECTED_DESC);
tstate.tupstore = rsi->setResult;
tstate.tupdesc = rsi->setDesc;
diff --git a/src/backend/utils/fmgr/README b/src/backend/utils/fmgr/README
index 9d8848106df..4b2a5df2852 100644
--- a/src/backend/utils/fmgr/README
+++ b/src/backend/utils/fmgr/README
@@ -305,7 +305,7 @@ If available, the expected tuple descriptor is passed in ReturnSetInfo;
in other contexts the expectedDesc field will be NULL. The function need
not pay attention to expectedDesc, but it may be useful in special cases.
-SetSingleFuncCall() is a helper function able to setup the function's
+InitMaterializedSRF() is a helper function able to setup the function's
ReturnSetInfo for a single call, filling in the Tuplestore and the
TupleDesc with the proper configuration for Materialize mode.
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index 78eb60c3e85..7ac6f36abe8 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -57,7 +57,16 @@ static TypeFuncClass get_type_func_class(Oid typid, Oid *base_typeid);
/*
- * SetSingleFuncCall
+ * Compatibility function for v15.
+ */
+void
+SetSingleFuncCall(FunctionCallInfo fcinfo, bits32 flags)
+{
+ InitMaterializedSRF(fcinfo, flags);
+}
+
+/*
+ * InitMaterializedSRF
*
* Helper function to build the state of a set-returning function used
* in the context of a single call with materialize mode. This code
@@ -65,15 +74,15 @@ static TypeFuncClass get_type_func_class(Oid typid, Oid *base_typeid);
* the TupleDesc used with the function and stores them into the
* function's ReturnSetInfo.
*
- * "flags" can be set to SRF_SINGLE_USE_EXPECTED, to use the tuple
+ * "flags" can be set to MAT_SRF_USE_EXPECTED_DESC, to use the tuple
* descriptor coming from expectedDesc, which is the tuple descriptor
- * expected by the caller. SRF_SINGLE_BLESS can be set to complete the
+ * expected by the caller. MAT_SRF_BLESS can be set to complete the
* information associated to the tuple descriptor, which is necessary
* in some cases where the tuple descriptor comes from a transient
* RECORD datatype.
*/
void
-SetSingleFuncCall(FunctionCallInfo fcinfo, bits32 flags)
+InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags)
{
bool random_access;
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
@@ -88,7 +97,7 @@ SetSingleFuncCall(FunctionCallInfo fcinfo, bits32 flags)
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("set-valued function called in context that cannot accept a set")));
if (!(rsinfo->allowedModes & SFRM_Materialize) ||
- ((flags & SRF_SINGLE_USE_EXPECTED) != 0 && rsinfo->expectedDesc == NULL))
+ ((flags & MAT_SRF_USE_EXPECTED_DESC) != 0 && rsinfo->expectedDesc == NULL))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("materialize mode required, but it is not allowed in this context")));
@@ -101,7 +110,7 @@ SetSingleFuncCall(FunctionCallInfo fcinfo, bits32 flags)
old_context = MemoryContextSwitchTo(per_query_ctx);
/* build a tuple descriptor for our result type */
- if ((flags & SRF_SINGLE_USE_EXPECTED) != 0)
+ if ((flags & MAT_SRF_USE_EXPECTED_DESC) != 0)
stored_tupdesc = CreateTupleDescCopy(rsinfo->expectedDesc);
else
{
@@ -110,7 +119,7 @@ SetSingleFuncCall(FunctionCallInfo fcinfo, bits32 flags)
}
/* If requested, bless the tuple descriptor */
- if ((flags & SRF_SINGLE_BLESS) != 0)
+ if ((flags & MAT_SRF_BLESS) != 0)
BlessTupleDesc(stored_tupdesc);
random_access = (rsinfo->allowedModes & SFRM_Materialize_Random) != 0;
diff --git a/src/backend/utils/misc/guc_funcs.c b/src/backend/utils/misc/guc_funcs.c
index fb763df5fe8..108b3bd1290 100644
--- a/src/backend/utils/misc/guc_funcs.c
+++ b/src/backend/utils/misc/guc_funcs.c
@@ -996,7 +996,7 @@ show_all_file_settings(PG_FUNCTION_ARGS)
conf = ProcessConfigFileInternal(PGC_SIGHUP, false, DEBUG3);
/* Build a tuplestore to return our results in */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
/* Process the results and create a tuplestore */
for (seqno = 1; conf != NULL; conf = conf->next, seqno++)
diff --git a/src/backend/utils/misc/pg_config.c b/src/backend/utils/misc/pg_config.c
index d9e18caf448..581965395db 100644
--- a/src/backend/utils/misc/pg_config.c
+++ b/src/backend/utils/misc/pg_config.c
@@ -30,7 +30,7 @@ pg_config(PG_FUNCTION_ARGS)
int i = 0;
/* initialize our tuplestore */
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
configdata = get_configdata(my_exec_path, &configdata_len);
for (i = 0; i < configdata_len; i++)
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
index 3a161bdb88d..c3e95346b60 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
@@ -1139,7 +1139,7 @@ pg_cursor(PG_FUNCTION_ARGS)
* We put all the tuples into a tuplestore in one scan of the hashtable.
* This avoids any issue of the hashtable possibly changing between calls.
*/
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
hash_seq_init(&hash_seq, PortalHashTable);
while ((hentry = hash_seq_search(&hash_seq)) != NULL)
diff --git a/src/include/funcapi.h b/src/include/funcapi.h
index c9709f25b23..8aed8dccaff 100644
--- a/src/include/funcapi.h
+++ b/src/include/funcapi.h
@@ -282,7 +282,7 @@ HeapTupleGetDatum(const HeapTupleData *tuple)
* memory allocated in multi_call_memory_ctx, but holding file descriptors or
* other non-memory resources open across calls is a bug. SRFs that need
* such resources should not use these macros, but instead populate a
- * tuplestore during a single call, as set up by SetSingleFuncCall() (see
+ * tuplestore during a single call, as set up by InitMaterializedSRF() (see
* fmgr/README). Alternatively, set up a callback to release resources
* at query shutdown, using RegisterExprContextCallback().
*
@@ -291,9 +291,15 @@ HeapTupleGetDatum(const HeapTupleData *tuple)
/* from funcapi.c */
-/* flag bits for SetSingleFuncCall() */
-#define SRF_SINGLE_USE_EXPECTED 0x01 /* use expectedDesc as tupdesc */
-#define SRF_SINGLE_BLESS 0x02 /* validate tuple for SRF */
+/* flag bits for InitMaterializedSRF() */
+#define MAT_SRF_USE_EXPECTED_DESC 0x01 /* use expectedDesc as tupdesc. */
+#define MAT_SRF_BLESS 0x02 /* "Bless" a tuple descriptor with
+ * BlessTupleDesc(). */
+extern void InitMaterializedSRF(FunctionCallInfo fcinfo, bits32 flags);
+
+/* Compatibility declarations, for v15 */
+#define SRF_SINGLE_USE_EXPECTED MAT_SRF_USE_EXPECTED_DESC
+#define SRF_SINGLE_BLESS MAT_SRF_BLESS
extern void SetSingleFuncCall(FunctionCallInfo fcinfo, bits32 flags);
extern FuncCallContext *init_MultiFuncCall(PG_FUNCTION_ARGS);
diff --git a/src/test/modules/test_ddl_deparse/test_ddl_deparse.c b/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
index 133594999bd..7e9e443306c 100644
--- a/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
+++ b/src/test/modules/test_ddl_deparse/test_ddl_deparse.c
@@ -93,7 +93,7 @@ get_altertable_subcmdinfo(PG_FUNCTION_ARGS)
if (cmd->type != SCT_AlterTable)
elog(ERROR, "command is not ALTER TABLE");
- SetSingleFuncCall(fcinfo, 0);
+ InitMaterializedSRF(fcinfo, 0);
if (cmd->d.alterTable.subcmds == NIL)
elog(ERROR, "empty alter table subcommand list");