35 size_t configdata_len;
43 errmsg(
"materialize mode required, but it is not " 44 "allowed in this context")));
55 if (tupdesc->natts != 2 ||
60 errmsg(
"query-specified return tuple and " 61 "function return type are not compatible")));
73 for (
i = 0;
i < configdata_len;
i++)
76 values[1] = configdata[
i].setting;
TupleDesc CreateTupleDescCopy(TupleDesc tupdesc)
#define TupleDescAttr(tupdesc, i)
#define tuplestore_donestoring(state)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
int errcode(int sqlerrcode)
HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values)
void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple)
Datum pg_config(PG_FUNCTION_ARGS)
Tuplestorestate * tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes)
char my_exec_path[MAXPGPATH]
AttInMetadata * TupleDescGetAttInMetadata(TupleDesc tupdesc)
#define ereport(elevel,...)
SetFunctionReturnMode returnMode
ConfigData * get_configdata(const char *my_exec_path, size_t *configdata_len)
MemoryContext ecxt_per_query_memory
Tuplestorestate * setResult
static Datum values[MAXATTR]
int errmsg(const char *fmt,...)
#define ReleaseTupleDesc(tupdesc)