Rename SetSingleFuncCall() to InitMaterializedSRF()
authorMichael Paquier <michael@paquier.xyz>
Tue, 18 Oct 2022 01:22:35 +0000 (10:22 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 18 Oct 2022 01:22:35 +0000 (10:22 +0900)
Per discussion, the existing routine name able to initialize a SRF
function with materialize mode is unpopular, so rename it.  Equally, the
flags of this function are renamed, as of:
- SRF_SINGLE_USE_EXPECTED -> MAT_SRF_USE_EXPECTED_DESC
- SRF_SINGLE_BLESS -> MAT_SRF_BLESS
The previous function and flags introduced in 9e98583 are kept around
for compatibility purposes, so as any extension code already compiled
with v15 continues to work as-is.  The declarations introduced here for
compatibility will be removed from HEAD in a follow-up commit.

The new names have been suggested by Andres Freund and Melanie
Plageman.

Discussion: https://postgr.es/m/20221013194820.ciktb2sbbpw7cljm@awork3.anarazel.de
Backpatch-through: 15

36 files changed:
contrib/amcheck/verify_heapam.c
contrib/dblink/dblink.c
contrib/pageinspect/brinfuncs.c
contrib/pageinspect/gistfuncs.c
contrib/pg_stat_statements/pg_stat_statements.c
contrib/pg_walinspect/pg_walinspect.c
contrib/pgrowlocks/pgrowlocks.c
contrib/postgres_fdw/connection.c
contrib/xml2/xpath.c
src/backend/access/transam/rmgr.c
src/backend/access/transam/xlogprefetcher.c
src/backend/commands/event_trigger.c
src/backend/commands/extension.c
src/backend/commands/prepare.c
src/backend/foreign/foreign.c
src/backend/replication/logical/launcher.c
src/backend/replication/logical/logicalfuncs.c
src/backend/replication/logical/origin.c
src/backend/replication/slotfuncs.c
src/backend/replication/walsender.c
src/backend/storage/ipc/shmem.c
src/backend/utils/adt/datetime.c
src/backend/utils/adt/genfile.c
src/backend/utils/adt/hbafuncs.c
src/backend/utils/adt/jsonfuncs.c
src/backend/utils/adt/mcxtfuncs.c
src/backend/utils/adt/misc.c
src/backend/utils/adt/pgstatfuncs.c
src/backend/utils/adt/varlena.c
src/backend/utils/fmgr/README
src/backend/utils/fmgr/funcapi.c
src/backend/utils/misc/guc_funcs.c
src/backend/utils/misc/pg_config.c
src/backend/utils/mmgr/portalmem.c
src/include/funcapi.h
src/test/modules/test_ddl_deparse/test_ddl_deparse.c

index 83dc728011552f6d27a988afc078b2f37aaa3ed8..b72a5c96d12cb28c07c7b4b3e5f438fc005b6c48 100644 (file)
@@ -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;
 
index 9eef417c47b74f7f0e588ae77158471884ca3965..9202c3584758b8b99e7addbab176109e3ee8d512 100644 (file)
@@ -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)
index f4c959ecab9fbe4ec2096eee4e02bb4e42dd1a6b..12a72170385254226c24d6461b9c472eb6965c62 100644 (file)
@@ -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);
 
index d0a34a337561590af066034246927941987cf214..f15714842a61582083a89080031aa7a22dddbe56 100644 (file)
@@ -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);
index 73439c01991d56679d2f6c7e22e5348ebca32d03..e5aa429995c6d7e2f0139232a34edd86d30b0491 100644 (file)
@@ -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
index 38fb4106da49aeef8dd323574e020f4db7b3b69d..beba4788c73181785bff159cbd1e2715bd255feb 100644 (file)
@@ -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);
 
index 1d4d4965ac98032afb3a1b6b165a6f7c1e412186..c543277b7c550b772803f51721796be965884889 100644 (file)
@@ -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));
index 939d114f02e4ecb8ba7baa5d3fc0b373c33430d9..f0c45b00db83ec7e033fbe82e81cdaa0744a9e67 100644 (file)
@@ -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)
index b8ee757674d48a999dc45d6520d9bfeb55920bbf..a692dc6be86dfd6a56d34b8d28d1b8d5e34861b9 100644 (file)
@@ -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)
index 3b6de3aa04e4d2d14dacba87bd9971d60f7ad394..6bb4de387f3512c01e05409815a8c380dc497696 100644 (file)
@@ -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++)
        {
index 1cbac4b7f6f9d1cdd3b4196a0a07261c45f1b3aa..0cf03945eec84b891999e753815d041ca4b6fc0c 100644 (file)
@@ -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;
index 441f29d684ff50df54ffe4cbf23881e9ed4e57bf..8d36b6648809b5ade4e19b191710de13e4a56d64 100644 (file)
@@ -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)
        {
index 6b6720c6905ad72f95d0660a4de21f6d60b47346..1a62e5dac5a38b7abbbb178c8ecac178c05c054c 100644 (file)
@@ -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));
index c4b54d054757b8728ae941f427819f665cea289c..9e29584d93efcfa70df34218b821667b835fc2d7 100644 (file)
@@ -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)
index 353e20a0cf7089705d303c857e340ec665183422..56fcb8edf17ae7416541e98d0ecef791a9725c35 100644 (file)
@@ -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)
        {
index 3bbd5227241dc9a441f2639540601f339e5218cb..ff57421da69d9fcd795f87bdba1e50d20020b632 100644 (file)
@@ -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);
index 7fa2b2cba7f91d88d6d8dab1429d0b1e90f41a52..5c231785700c58d760d4f22d40fc62e05362f4a2 100644 (file)
@@ -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;
 
index f19b72ff351ef531b3b2921a57dc62b76baf3e2c..f134e44878fc776438aaa8172deb58e2a614a3e4 100644 (file)
@@ -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);
index ca945994ef018f5a32511b3479703613fc768bde..16a35279037657bada54d27d4a3ab2e38d1b2de7 100644 (file)
@@ -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();
 
index e9ba500a15fe950359348de0929b9d467ffe178c..2193dcaec611d74d1cb93091909f501d6007cc5d 100644 (file)
@@ -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
index c1279960cd0bc0cd20c70623718aa7a5553e07a4..10be765fb7b173947f5875cdf1d7b6e84b6b63de 100644 (file)
@@ -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);
 
index 74b68070984fb3c4e1ad4cd6498653667684bd80..8cd10ab204a1b3f7dcca8b653a0546c774d808ea 100644 (file)
@@ -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();
index 2f1e907a10d87b2a0a34d8414d05f9dca864a758..ab6f67f8747e86c8b7d33be8182b132ed39cb416 100644 (file)
@@ -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
index 9e5794071cd7be5b7d8894cd2b85e171b59d4eec..cbbe44ff133213c81a8714cefa5b7e31579effef 100644 (file)
@@ -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;
index fd0d355789c44ee5edc8969a32a32af51278c4bf..bfc3f02a8631a712b49f5a4860ee292b1aa45412 100644 (file)
@@ -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;
index bb7cc940249b90a362928ea2da85cad5eff0c2aa..04b7aa2a77bcea9fdebd43aecd202db72d1dc7d5 100644 (file)
@@ -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);
 
index 6c45fd2007ad2a9380554f1873a061b9989985de..9c132512315e723a92cc9736d6620e6f44eaf2f6 100644 (file)
@@ -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)
        {
index 85ac3e3f04f80393a8446fdd59d0fb1569ff998b..96bffc0f2aceb8a6b8ca03b493503a253d33f90e 100644 (file)
@@ -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();
index 1f6e09082163b2dff46ed2a1a84ff12c14451b8f..c5e7ee7ca2d3073c067928cfa35c1e746218bb64 100644 (file)
@@ -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;
 
index 9d8848106dfe0613d1c90941c7fec4d7709e8288..4b2a5df285253aa83f322dcb5901e0c438b1969a 100644 (file)
@@ -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.
 
index 78eb60c3e85b5dc3990f5a6bfa17eae57c3db402..7ac6f36abe8a6f75c3caa58b64c8c2b5fc6b0df6 100644 (file)
@@ -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;
index fb763df5fe80b9d5bb6505f365b68a85e0155264..108b3bd1290e18c43ee30e201f86da17da6742b1 100644 (file)
@@ -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++)
index d9e18caf448c9a0943f64a86f21c2c07e846d12c..581965395dbed0f93e878fc652e1ec77e5ff5d3a 100644 (file)
@@ -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++)
index 3a161bdb88d17c933a844650154e79bb2896ddf7..c3e95346b60aeb3ac614f33836fafb3c34c810b7 100644 (file)
@@ -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)
index c9709f25b2366d8ace5866a8edffb5a1ab0aa887..8aed8dccaff1660fcca699038e77be9443139036 100644 (file)
@@ -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);
index 133594999bd246826bc6b48e67ac15b8afc7c72d..7e9e443306c5c0dc366761d048c2696f9d59afce 100644 (file)
@@ -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");