Age Owner TLA Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * pg_config.c
4 : * Expose same output as pg_config except as an SRF
5 : *
6 : * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7 : * Portions Copyright (c) 1994, Regents of the University of California
8 : *
9 : * IDENTIFICATION
10 : * src/backend/utils/misc/pg_config.c
11 : *
12 : *-------------------------------------------------------------------------
13 : */
14 :
15 : #include "postgres.h"
16 :
17 : #include "catalog/pg_type.h"
18 : #include "common/config_info.h"
19 : #include "funcapi.h"
20 : #include "miscadmin.h"
21 : #include "port.h"
22 : #include "utils/builtins.h"
23 :
24 : Datum
2608 mail 25 CBC 3 : pg_config(PG_FUNCTION_ARGS)
26 : {
2495 rhaas 27 3 : ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
28 : ConfigData *configdata;
29 : size_t configdata_len;
30 3 : int i = 0;
31 :
32 : /* initialize our tuplestore */
173 michael 33 3 : InitMaterializedSRF(fcinfo, 0);
34 :
2608 mail 35 3 : configdata = get_configdata(my_exec_path, &configdata_len);
36 72 : for (i = 0; i < configdata_len; i++)
37 : {
38 : Datum values[2];
39 : bool nulls[2];
40 :
409 michael 41 69 : memset(values, 0, sizeof(values));
42 69 : memset(nulls, 0, sizeof(nulls));
43 :
44 69 : values[0] = CStringGetTextDatum(configdata[i].name);
45 69 : values[1] = CStringGetTextDatum(configdata[i].setting);
46 :
398 47 69 : tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc, values, nulls);
48 : }
49 :
2608 mail 50 3 : return (Datum) 0;
51 : }
|