Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
a3f66eac
Commit
a3f66eac
authored
Mar 16, 2008
by
Magnus Hagander
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some cleanups of enum-guc code, per comments from Tom.
parent
c9a1cc69
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
68 additions
and
23 deletions
+68
-23
src/backend/utils/misc/README
src/backend/utils/misc/README
+2
-2
src/backend/utils/misc/guc.c
src/backend/utils/misc/guc.c
+44
-10
src/include/utils/guc.h
src/include/utils/guc.h
+21
-1
src/include/utils/guc_tables.h
src/include/utils/guc_tables.h
+1
-10
No files found.
src/backend/utils/misc/README
View file @
a3f66eac
$PostgreSQL: pgsql/src/backend/utils/misc/README,v 1.
8 2007/12/28 00:23:23 tgl
Exp $
$PostgreSQL: pgsql/src/backend/utils/misc/README,v 1.
9 2008/03/16 16:42:44 mha
Exp $
GUC IMPLEMENTATION NOTES
The GUC (Grand Unified Configuration) module implements configuration
variables of multiple types (currently boolean, int, float, and string).
variables of multiple types (currently boolean,
enum,
int, float, and string).
Variable settings can come from various places, with a priority ordering
determining which setting is used.
...
...
src/backend/utils/misc/guc.c
View file @
a3f66eac
...
...
@@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.43
7 2008/03/10 12:55:13
mha Exp $
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.43
8 2008/03/16 16:42:44
mha Exp $
*
*--------------------------------------------------------------------
*/
...
...
@@ -168,6 +168,14 @@ static const char *show_tcp_keepalives_count(void);
static
bool
assign_autovacuum_max_workers
(
int
newval
,
bool
doit
,
GucSource
source
);
static
bool
assign_maxconnections
(
int
newval
,
bool
doit
,
GucSource
source
);
static
const
char
*
config_enum_lookup_value
(
struct
config_enum
*
record
,
int
val
);
static
bool
config_enum_lookup_name
(
struct
config_enum
*
record
,
const
char
*
value
,
int
*
retval
);
static
char
*
config_enum_get_options
(
struct
config_enum
*
record
,
const
char
*
prefix
,
const
char
*
suffix
);
/*
* Options for enum values defined in this module.
*/
...
...
@@ -3134,8 +3142,9 @@ InitializeGUCOptions(void)
if
(
conf
->
assign_hook
)
if
(
!
(
*
conf
->
assign_hook
)
(
conf
->
boot_val
,
true
,
PGC_S_DEFAULT
))
elog
(
FATAL
,
"failed to initialize %s to %d"
,
conf
->
gen
.
name
,
conf
->
boot_val
);
elog
(
FATAL
,
"failed to initialize %s to %s"
,
conf
->
gen
.
name
,
config_enum_lookup_value
(
conf
,
conf
->
boot_val
));
*
conf
->
variable
=
conf
->
reset_val
=
conf
->
boot_val
;
break
;
}
...
...
@@ -4230,7 +4239,7 @@ config_enum_lookup_value(struct config_enum *record, int val)
* Lookup the value for an enum option with the selected name
* (case-insensitive).
* If the enum option is found, sets the retval value and returns
* true. If it's not found, return FALSE and
don't touch retval
.
* true. If it's not found, return FALSE and
retval is set to 0
.
*
*/
static
bool
...
...
@@ -4243,7 +4252,7 @@ config_enum_lookup_name(struct config_enum *record, const char *value, int *retv
while
(
entry
&&
entry
->
name
)
{
if
(
!
pg_strcasecmp
(
value
,
entry
->
name
)
)
if
(
pg_strcasecmp
(
value
,
entry
->
name
)
==
0
)
{
*
retval
=
entry
->
val
;
return
TRUE
;
...
...
@@ -4255,10 +4264,10 @@ config_enum_lookup_name(struct config_enum *record, const char *value, int *retv
/*
* Returna list of all available options for an enum, separated
* Return
a list of all available options for an enum, separated
* by ", " (comma-space).
* If prefix is
gievn
, it is added before the first enum value.
* If suffix is
given
, it is added to the end of the string.
* If prefix is
non-NULL
, it is added before the first enum value.
* If suffix is
non-NULL
, it is added to the end of the string.
*/
static
char
*
config_enum_get_options
(
struct
config_enum
*
record
,
const
char
*
prefix
,
const
char
*
suffix
)
...
...
@@ -4895,8 +4904,9 @@ set_config_option(const char *name, const char *value,
{
ereport
(
elevel
,
(
errcode
(
ERRCODE_INVALID_PARAMETER_VALUE
),
errmsg
(
"invalid value for parameter
\"
%s
\"
:
\"
%d
\"
"
,
name
,
newval
)));
errmsg
(
"invalid value for parameter
\"
%s
\"
:
\"
%s
\"
"
,
name
,
config_enum_lookup_value
(
conf
,
newval
))));
return
false
;
}
...
...
@@ -5592,6 +5602,30 @@ DefineCustomStringVariable(const char *name,
define_custom_variable
(
&
var
->
gen
);
}
void
DefineCustomEnumVariable
(
const
char
*
name
,
const
char
*
short_desc
,
const
char
*
long_desc
,
int
*
valueAddr
,
const
struct
config_enum_entry
*
options
,
GucContext
context
,
GucEnumAssignHook
assign_hook
,
GucShowHook
show_hook
)
{
struct
config_enum
*
var
;
var
=
(
struct
config_enum
*
)
init_custom_variable
(
name
,
short_desc
,
long_desc
,
context
,
PGC_ENUM
,
sizeof
(
struct
config_enum
));
var
->
variable
=
valueAddr
;
var
->
boot_val
=
*
valueAddr
;
var
->
reset_val
=
*
valueAddr
;
var
->
options
=
options
;
var
->
assign_hook
=
assign_hook
;
var
->
show_hook
=
show_hook
;
define_custom_variable
(
&
var
->
gen
);
}
void
EmitWarningsOnPlaceholders
(
const
char
*
className
)
{
...
...
src/include/utils/guc.h
View file @
a3f66eac
...
...
@@ -7,7 +7,7 @@
* Copyright (c) 2000-2008, PostgreSQL Global Development Group
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* $PostgreSQL: pgsql/src/include/utils/guc.h,v 1.9
1 2008/03/10 12:55:13
mha Exp $
* $PostgreSQL: pgsql/src/include/utils/guc.h,v 1.9
2 2008/03/16 16:42:44
mha Exp $
*--------------------------------------------------------------------
*/
#ifndef GUC_H
...
...
@@ -93,6 +93,16 @@ typedef enum
PGC_S_SESSION
/* SET command */
}
GucSource
;
/*
* Enum values are made up of an array of name-value pairs
*/
struct
config_enum_entry
{
const
char
*
name
;
int
val
;
};
typedef
const
char
*
(
*
GucStringAssignHook
)
(
const
char
*
newval
,
bool
doit
,
GucSource
source
);
typedef
bool
(
*
GucBoolAssignHook
)
(
bool
newval
,
bool
doit
,
GucSource
source
);
typedef
bool
(
*
GucIntAssignHook
)
(
int
newval
,
bool
doit
,
GucSource
source
);
...
...
@@ -189,6 +199,16 @@ extern void DefineCustomStringVariable(
GucStringAssignHook
assign_hook
,
GucShowHook
show_hook
);
extern
void
DefineCustomEnumVariable
(
const
char
*
name
,
const
char
*
short_desc
,
const
char
*
long_desc
,
int
*
valueAddr
,
const
struct
config_enum_entry
*
options
,
GucContext
context
,
GucEnumAssignHook
assign_hook
,
GucShowHook
show_hook
);
extern
void
EmitWarningsOnPlaceholders
(
const
char
*
className
);
extern
const
char
*
GetConfigOption
(
const
char
*
name
);
...
...
src/include/utils/guc_tables.h
View file @
a3f66eac
...
...
@@ -7,7 +7,7 @@
*
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.
39 2008/03/10 12:55:13
mha Exp $
* $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.
40 2008/03/16 16:42:44
mha Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -37,15 +37,6 @@ union config_var_value
int
enumval
;
};
/*
* Enum values are made up of an array of name-value pairs
*/
struct
config_enum_entry
{
const
char
*
name
;
int
val
;
};
/*
* Groupings to help organize all the run-time options for display
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment