Skip to content

Commit 66989aa

Browse files
committed
Added new group of read-only GUC variables to allow simple access
to certain compile-time options (FUNC_MAX_ARGS, INDEX_MAX_KEYS, NAMEDATALEN, BLCKSZ, HAVE_INT64_TIMESTAMP). Also added "category", "short_desc", and "extra_desc" to the pg_settings view. Per recent discussion here: http://archives.postgresql.org/pgsql-patches/2003-11/msg00363.php
1 parent 7f8f766 commit 66989aa

File tree

4 files changed

+103
-27
lines changed

4 files changed

+103
-27
lines changed

src/backend/catalog/system_views.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* Copyright 1996-2003, PostgreSQL Global Development Group
55
*
6-
* $PostgreSQL: pgsql/src/backend/catalog/system_views.sql,v 1.3 2003/11/29 22:39:40 pgsql Exp $
6+
* $PostgreSQL: pgsql/src/backend/catalog/system_views.sql,v 1.4 2003/12/03 18:52:00 joe Exp $
77
*/
88

99
CREATE VIEW pg_user AS
@@ -260,8 +260,8 @@ CREATE VIEW pg_locks AS
260260
CREATE VIEW pg_settings AS
261261
SELECT *
262262
FROM pg_show_all_settings() AS A
263-
(name text, setting text, context text, vartype text,
264-
source text, min_val text, max_val text);
263+
(name text, setting text, category text, short_desc text, extra_desc text,
264+
context text, vartype text, source text, min_val text, max_val text);
265265

266266
CREATE RULE pg_settings_u AS
267267
ON UPDATE TO pg_settings

src/backend/utils/misc/guc.c

Lines changed: 96 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Written by Peter Eisentraut <peter_e@gmx.net>.
1111
*
1212
* IDENTIFICATION
13-
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.174 2003/12/01 22:08:00 momjian Exp $
13+
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.175 2003/12/03 18:52:00 joe Exp $
1414
*
1515
*--------------------------------------------------------------------
1616
*/
@@ -158,7 +158,11 @@ static char *server_version_string;
158158
static char *session_authorization_string;
159159
static char *timezone_string;
160160
static char *XactIsoLevel_string;
161-
161+
static int max_function_args;
162+
static int max_index_keys;
163+
static int max_identifier_length;
164+
static int block_size;
165+
static bool integer_datetimes;
162166

163167
/* Macros for freeing malloc'd pointers only if appropriate to do so */
164168
/* Some of these tests are probably redundant, but be safe ... */
@@ -304,6 +308,8 @@ const char *const config_group_names[] =
304308
gettext_noop("Version and Platform Compatibility / Other Platforms and Clients"),
305309
/* DEVELOPER_OPTIONS */
306310
gettext_noop("Developer Options"),
311+
/* COMPILE_OPTIONS */
312+
gettext_noop("Compiled-in Options"),
307313
/* help_config wants this array to be null-terminated */
308314
NULL
309315
};
@@ -842,6 +848,20 @@ static struct config_bool ConfigureNamesBool[] =
842848
true, NULL, NULL
843849
},
844850

851+
{
852+
{"integer_datetimes", PGC_INTERNAL, COMPILE_OPTIONS,
853+
gettext_noop("Datetimes are integer based"),
854+
NULL,
855+
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
856+
},
857+
&integer_datetimes,
858+
#ifdef HAVE_INT64_TIMESTAMP
859+
true, NULL, NULL
860+
#else
861+
false, NULL, NULL
862+
#endif
863+
},
864+
845865
/* End-of-list marker */
846866
{
847867
{NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL
@@ -1238,6 +1258,46 @@ static struct config_int ConfigureNamesInt[] =
12381258
100, 1, 1000, NULL, NULL
12391259
},
12401260

1261+
{
1262+
{"max_function_args", PGC_INTERNAL, COMPILE_OPTIONS,
1263+
gettext_noop("Shows the maximum number of function arguments"),
1264+
NULL,
1265+
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
1266+
},
1267+
&max_function_args,
1268+
FUNC_MAX_ARGS, FUNC_MAX_ARGS, FUNC_MAX_ARGS, NULL, NULL
1269+
},
1270+
1271+
{
1272+
{"max_index_keys", PGC_INTERNAL, COMPILE_OPTIONS,
1273+
gettext_noop("Shows the maximum number of index keys"),
1274+
NULL,
1275+
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
1276+
},
1277+
&max_index_keys,
1278+
INDEX_MAX_KEYS, INDEX_MAX_KEYS, INDEX_MAX_KEYS, NULL, NULL
1279+
},
1280+
1281+
{
1282+
{"max_identifier_length", PGC_INTERNAL, COMPILE_OPTIONS,
1283+
gettext_noop("Shows the maximum identifier length"),
1284+
NULL,
1285+
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
1286+
},
1287+
&max_identifier_length,
1288+
NAMEDATALEN - 1, NAMEDATALEN - 1, NAMEDATALEN - 1, NULL, NULL
1289+
},
1290+
1291+
{
1292+
{"block_size", PGC_INTERNAL, COMPILE_OPTIONS,
1293+
gettext_noop("Shows size of a disk block"),
1294+
NULL,
1295+
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
1296+
},
1297+
&block_size,
1298+
BLCKSZ, BLCKSZ, BLCKSZ, NULL, NULL
1299+
},
1300+
12411301
/* End-of-list marker */
12421302
{
12431303
{NULL, 0, 0, NULL, NULL}, NULL, 0, 0, 0, NULL, NULL
@@ -3478,25 +3538,34 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
34783538
/* setting : use _ShowOption in order to avoid duplicating the logic */
34793539
values[1] = _ShowOption(conf);
34803540

3541+
/* group */
3542+
values[2] = config_group_names[conf->group];
3543+
3544+
/* short_desc */
3545+
values[3] = conf->short_desc;
3546+
3547+
/* extra_desc */
3548+
values[4] = conf->long_desc;
3549+
34813550
/* context */
3482-
values[2] = GucContext_Names[conf->context];
3551+
values[5] = GucContext_Names[conf->context];
34833552

34843553
/* vartype */
3485-
values[3] = config_type_names[conf->vartype];
3554+
values[6] = config_type_names[conf->vartype];
34863555

34873556
/* source */
3488-
values[4] = GucSource_Names[conf->source];
3557+
values[7] = GucSource_Names[conf->source];
34893558

34903559
/* now get the type specifc attributes */
34913560
switch (conf->vartype)
34923561
{
34933562
case PGC_BOOL:
34943563
{
34953564
/* min_val */
3496-
values[5] = NULL;
3565+
values[8] = NULL;
34973566

34983567
/* max_val */
3499-
values[6] = NULL;
3568+
values[9] = NULL;
35003569
}
35013570
break;
35023571

@@ -3506,11 +3575,11 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
35063575

35073576
/* min_val */
35083577
snprintf(buffer, sizeof(buffer), "%d", lconf->min);
3509-
values[5] = pstrdup(buffer);
3578+
values[8] = pstrdup(buffer);
35103579

35113580
/* max_val */
35123581
snprintf(buffer, sizeof(buffer), "%d", lconf->max);
3513-
values[6] = pstrdup(buffer);
3582+
values[9] = pstrdup(buffer);
35143583
}
35153584
break;
35163585

@@ -3520,21 +3589,21 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
35203589

35213590
/* min_val */
35223591
snprintf(buffer, sizeof(buffer), "%g", lconf->min);
3523-
values[5] = pstrdup(buffer);
3592+
values[8] = pstrdup(buffer);
35243593

35253594
/* max_val */
35263595
snprintf(buffer, sizeof(buffer), "%g", lconf->max);
3527-
values[6] = pstrdup(buffer);
3596+
values[9] = pstrdup(buffer);
35283597
}
35293598
break;
35303599

35313600
case PGC_STRING:
35323601
{
35333602
/* min_val */
3534-
values[5] = NULL;
3603+
values[8] = NULL;
35353604

35363605
/* max_val */
3537-
values[6] = NULL;
3606+
values[9] = NULL;
35383607
}
35393608
break;
35403609

@@ -3546,10 +3615,10 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
35463615
*/
35473616

35483617
/* min_val */
3549-
values[5] = NULL;
3618+
values[8] = NULL;
35503619

35513620
/* max_val */
3552-
values[6] = NULL;
3621+
values[9] = NULL;
35533622
}
35543623
break;
35553624
}
@@ -3592,7 +3661,7 @@ show_config_by_name(PG_FUNCTION_ARGS)
35923661
* show_all_settings - equiv to SHOW ALL command but implemented as
35933662
* a Table Function.
35943663
*/
3595-
#define NUM_PG_SETTINGS_ATTS 7
3664+
#define NUM_PG_SETTINGS_ATTS 10
35963665

35973666
Datum
35983667
show_all_settings(PG_FUNCTION_ARGS)
@@ -3626,15 +3695,21 @@ show_all_settings(PG_FUNCTION_ARGS)
36263695
TEXTOID, -1, 0, false);
36273696
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "setting",
36283697
TEXTOID, -1, 0, false);
3629-
TupleDescInitEntry(tupdesc, (AttrNumber) 3, "context",
3698+
TupleDescInitEntry(tupdesc, (AttrNumber) 3, "category",
3699+
TEXTOID, -1, 0, false);
3700+
TupleDescInitEntry(tupdesc, (AttrNumber) 4, "short_desc",
3701+
TEXTOID, -1, 0, false);
3702+
TupleDescInitEntry(tupdesc, (AttrNumber) 5, "extra_desc",
3703+
TEXTOID, -1, 0, false);
3704+
TupleDescInitEntry(tupdesc, (AttrNumber) 6, "context",
36303705
TEXTOID, -1, 0, false);
3631-
TupleDescInitEntry(tupdesc, (AttrNumber) 4, "vartype",
3706+
TupleDescInitEntry(tupdesc, (AttrNumber) 7, "vartype",
36323707
TEXTOID, -1, 0, false);
3633-
TupleDescInitEntry(tupdesc, (AttrNumber) 5, "source",
3708+
TupleDescInitEntry(tupdesc, (AttrNumber) 8, "source",
36343709
TEXTOID, -1, 0, false);
3635-
TupleDescInitEntry(tupdesc, (AttrNumber) 6, "min_val",
3710+
TupleDescInitEntry(tupdesc, (AttrNumber) 9, "min_val",
36363711
TEXTOID, -1, 0, false);
3637-
TupleDescInitEntry(tupdesc, (AttrNumber) 7, "max_val",
3712+
TupleDescInitEntry(tupdesc, (AttrNumber) 10, "max_val",
36383713
TEXTOID, -1, 0, false);
36393714

36403715
/* allocate a slot for a tuple with this tupdesc */

src/include/utils/guc_tables.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
99
*
10-
* $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.7 2003/11/29 22:41:15 pgsql Exp $
10+
* $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.8 2003/12/03 18:52:00 joe Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -50,7 +50,8 @@ enum config_group
5050
COMPAT_OPTIONS,
5151
COMPAT_OPTIONS_PREVIOUS,
5252
COMPAT_OPTIONS_CLIENT,
53-
DEVELOPER_OPTIONS
53+
DEVELOPER_OPTIONS,
54+
COMPILE_OPTIONS
5455
};
5556

5657
/*

src/test/regress/expected/rules.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1278,7 +1278,7 @@ SELECT viewname, definition FROM pg_views WHERE schemaname <> 'information_schem
12781278
pg_indexes | SELECT n.nspname AS schemaname, c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(i.oid) AS indexdef FROM (((pg_index x JOIN pg_class c ON ((c.oid = x.indrelid))) JOIN pg_class i ON ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE ((c.relkind = 'r'::"char") AND (i.relkind = 'i'::"char"));
12791279
pg_locks | SELECT l.relation, l."database", l."transaction", l.pid, l."mode", l.granted FROM pg_lock_status() l(relation oid, "database" oid, "transaction" xid, pid integer, "mode" text, granted boolean);
12801280
pg_rules | SELECT n.nspname AS schemaname, c.relname AS tablename, r.rulename, pg_get_ruledef(r.oid) AS definition FROM ((pg_rewrite r JOIN pg_class c ON ((c.oid = r.ev_class))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (r.rulename <> '_RETURN'::name);
1281-
pg_settings | SELECT a.name, a.setting, a.context, a.vartype, a.source, a.min_val, a.max_val FROM pg_show_all_settings() a(name text, setting text, context text, vartype text, source text, min_val text, max_val text);
1281+
pg_settings | SELECT a.name, a.setting, a.category, a.short_desc, a.extra_desc, a.context, a.vartype, a.source, a.min_val, a.max_val FROM pg_show_all_settings() a(name text, setting text, category text, short_desc text, extra_desc text, context text, vartype text, source text, min_val text, max_val text);
12821282
pg_stat_activity | SELECT d.oid AS datid, d.datname, pg_stat_get_backend_pid(s.backendid) AS procpid, pg_stat_get_backend_userid(s.backendid) AS usesysid, u.usename, pg_stat_get_backend_activity(s.backendid) AS current_query, pg_stat_get_backend_activity_start(s.backendid) AS query_start FROM pg_database d, (SELECT pg_stat_get_backend_idset() AS backendid) s, pg_shadow u WHERE ((pg_stat_get_backend_dbid(s.backendid) = d.oid) AND (pg_stat_get_backend_userid(s.backendid) = u.usesysid));
12831283
pg_stat_all_indexes | SELECT c.oid AS relid, i.oid AS indexrelid, n.nspname AS schemaname, c.relname, i.relname AS indexrelname, pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch FROM (((pg_class c JOIN pg_index x ON ((c.oid = x.indrelid))) JOIN pg_class i ON ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = 'r'::"char");
12841284
pg_stat_all_tables | SELECT c.oid AS relid, n.nspname AS schemaname, c.relname, pg_stat_get_numscans(c.oid) AS seq_scan, pg_stat_get_tuples_returned(c.oid) AS seq_tup_read, sum(pg_stat_get_numscans(i.indexrelid)) AS idx_scan, sum(pg_stat_get_tuples_fetched(i.indexrelid)) AS idx_tup_fetch, pg_stat_get_tuples_inserted(c.oid) AS n_tup_ins, pg_stat_get_tuples_updated(c.oid) AS n_tup_upd, pg_stat_get_tuples_deleted(c.oid) AS n_tup_del FROM ((pg_class c LEFT JOIN pg_index i ON ((c.oid = i.indrelid))) LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) WHERE (c.relkind = 'r'::"char") GROUP BY c.oid, n.nspname, c.relname;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy