Обсуждение: new patches...
Hi,
I have added the pg_options variable to the SET command. It can be executed
only by the superuser and is intended mainly as a debugging aid.
I have also moved the disableFsync variable to the pg_options array, so it
can now be set in the pg_options file or interactively with the commands:
SET pg_options to 'nofsinc=1'; SET pg_options to 'nofsinc=0';
There are obviously also the SHOW and RESET pg_options commands.
*** src/backend/commands/variable.c.orig Wed May 26 09:02:48 1999
--- src/backend/commands/variable.c Mon Jun 14 20:45:58 1999
***************
*** 15,20 ****
--- 15,22 ---- #include "commands/variable.h" #include "utils/builtins.h" #include "optimizer/internal.h"
+ #include "utils/trace.h"
+ #include "catalog/pg_shadow.h" #include "access/xact.h" #ifdef MULTIBYTE #include "mb/pg_wchar.h"
***************
*** 581,589 **** ExecutorLimit(ALL_TUPLES); return (TRUE); }
- #endif /*-----------------------------------------------------------------------*/ struct VariableParsers
--- 583,622 ---- ExecutorLimit(ALL_TUPLES); return (TRUE); } #endif
+ /*
+ *
+ * Pg_options
+ *
+ */
+ static bool
+ parse_pg_options(const char *value)
+ {
+ if (!superuser()) {
+ elog(ERROR, "Only users with Postgres superuser can set pg_options");
+ }
+ parse_options((char *) value, TRUE);
+ return (TRUE);
+ }
+
+ static bool
+ show_pg_options(void)
+ {
+ show_options();
+ return (TRUE);
+ }
+
+ static bool
+ reset_pg_options(void)
+ {
+ if (!superuser()) {
+ elog(ERROR, "Only users with Postgres superuser can set pg_options");
+ }
+ read_pg_options(0);
+ return (TRUE);
+ }
+ /*-----------------------------------------------------------------------*/ struct VariableParsers
***************
*** 629,634 ****
--- 662,670 ---- "query_limit", parse_query_limit, show_query_limit, reset_query_limit }, #endif
+ {
+ "pg_options", parse_pg_options, show_pg_options, reset_pg_options
+ }, { NULL, NULL, NULL, NULL }
*** src/backend/utils/init/globals.c.orig Wed May 26 09:05:49 1999
--- src/backend/utils/init/globals.c Mon Jun 14 20:56:34 1999
***************
*** 82,88 **** * malloc? XXX */ char FloatFormat[20] = "%f";
! bool disableFsync = false; bool allowSystemTableMods = false; int SortMem = 512;
--- 82,88 ---- * malloc? XXX */ char FloatFormat[20] = "%f";
! /* bool disableFsync = false; */ bool allowSystemTableMods = false; int SortMem = 512;
*** src/include/miscadmin.h.orig Wed May 26 09:06:39 1999
--- src/include/miscadmin.h Mon Jun 14 20:01:27 1999
***************
*** 22,27 ****
--- 22,29 ---- #ifndef MISCADMIN_H #define MISCADMIN_H
+ #include "utils/trace.h"
+ /***************************************************************************** * globals.h --
*
*****************************************************************************/
***************
*** 93,99 **** extern char FloatFormat[]; extern char DateFormat[];
! extern bool disableFsync; extern bool allowSystemTableMods; extern int SortMem;
--- 95,103 ---- extern char FloatFormat[]; extern char DateFormat[];
! /* extern bool disableFsync; */
! #define disableFsync pg_options[OPT_NOFSYNC]
! extern bool allowSystemTableMods; extern int SortMem;
*** src/bin/psql/psqlHelp.h.orig Fri Jun 4 09:00:17 1999
--- src/bin/psql/psqlHelp.h Mon Jun 14 20:17:45 1999
***************
*** 297,303 **** "set run-time environment back to default", "\ \tRESET
DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
! TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING"}, {"revoke", "revoke access control from a user or
group", "\
--- 297,303 ---- "set run-time environment back to default", "\ \tRESET
DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
! \t TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING|PG_OPTIONS"}, {"revoke", "revoke access control
froma user or group", "\
***************
*** 331,336 ****
--- 331,337 ---- \tSET KSQO TO 'ON'|'OFF'\n\ \tSET QUERY_LIMIT TO #\n\ \tSET TIMEZONE TO 'value'\n\
+ \tSET PG_OPTIONS TO 'value'\n\ \tSET TRANSACTION ISOLATION LEVEL 'SERIALIZABLE'|'READ COMMITTED'\n\ \tSET
CLIENT_ENCODING|NAMESTO 'EUC_JP'|'SJIS'|'EUC_CN'|'EUC_KR'|'EUC_TW'|\n\ \t
'BIG5'|'MULE_INTERNAL'|'LATIN1'|'LATIN2'|'LATIN3'|'LATIN4'|'LATIN5'|\n\
***************
*** 342,348 **** "show current run-time environment", "\ \tSHOW
DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
! TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING"}, {"unlisten", "stop listening for notification on
acondition name", "\
--- 343,349 ---- "show current run-time environment", "\ \tSHOW
DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
! \t TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING|PG_OPTIONS"}, {"unlisten", "stop listening for
notificationon a condition name", "\
*** src/include/utils/trace.h.orig Sat Jun 12 22:45:23 1999
--- src/include/utils/trace.h Mon Jun 14 20:50:56 1999
***************
*** 30,38 ****
--- 30,39 ---- extern int tprintf(int flag, const char *fmt,...); extern int eprintf(const char *fmt,...); extern
voidwrite_syslog(int level, char *line);
+ extern void show_options(void); extern void parse_options(char *str, bool secure); extern void
read_pg_options(SIGNAL_ARGS); /* * Trace options, used as index into pg_options. * Must match the constants in
pg_options[].
***************
*** 61,66 ****
--- 61,67 ---- TRACE_LOCKRELATION, OPT_LOCKREADPRIORITY, /* lock priority, see lock.c */
OPT_DEADLOCKTIMEOUT, /* deadlock timeout, see proc.c */
+ OPT_NOFSYNC, /* turn fsync off */ OPT_SYSLOG, /* use syslog for error
messages*/ OPT_HOSTLOOKUP, /* enable hostname lookup in ps_status */ OPT_SHOWPORTNUMBER,
/* show port number in ps_status */
*** src/backend/utils/misc/trace.c.orig Sat Jun 12 22:47:32 1999
--- src/backend/utils/misc/trace.c Mon Jun 14 20:50:06 1999
***************
*** 70,75 ****
--- 70,76 ---- "lock_debug_relid", "lock_read_priority", /* lock priority, see lock.c */
"deadlock_timeout", /* deadlock timeout, see proc.c */
+ "nofsync", /* turn fsync off */ "syslog", /* use syslog for error
messages*/ "hostlookup", /* enable hostname lookup in ps_status */ "showportnumber",
/*show port number in ps_status */
***************
*** 407,412 ****
--- 407,422 ---- close(fd); }
+ void
+ show_options(void)
+ {
+ int i;
+
+ for (i=0; i<NUM_PG_OPTIONS; i++) {
+ elog(NOTICE, "%s=%d", opt_names[i], pg_options[i]);
+ }
+ }
+ /* * Local Variables: * tab-width: 4
*** src/backend/bootstrap/bootstrap.c.orig Wed May 26 09:02:25 1999
--- src/backend/bootstrap/bootstrap.c Mon Jun 14 20:06:00 1999
***************
*** 182,188 **** Form_pg_attribute attrtypes[MAXATTR]; /* points to attribute info */ static char *values[MAXATTR];
/* cooresponding attribute values */ int numattr; /* number of attributes for cur. rel */
! extern bool disableFsync; /* do not fsync the database */ int DebugMode; static GlobalMemory nogc
=(GlobalMemory) NULL; /* special no-gc mem
--- 182,188 ---- Form_pg_attribute attrtypes[MAXATTR]; /* points to attribute info */ static char *values[MAXATTR];
/* cooresponding attribute values */ int numattr; /* number of attributes for cur. rel */
! /* extern bool disableFsync; */ /* do not fsync the database */ int DebugMode; static GlobalMemory
nogc= (GlobalMemory) NULL; /* special no-gc mem
--
Massimo Dal Zotto
+----------------------------------------------------------------------+
| Massimo Dal Zotto email: dz@cs.unitn.it |
| Via Marconi, 141 phone: ++39-0461534251 |
| 38057 Pergine Valsugana (TN) www: http://www.cs.unitn.it/~dz/ |
| Italy pgp: finger dz@tango.cs.unitn.it |
+----------------------------------------------------------------------+
Applied. Thanks.
> Hi,
>
> I have added the pg_options variable to the SET command. It can be executed
> only by the superuser and is intended mainly as a debugging aid.
> I have also moved the disableFsync variable to the pg_options array, so it
> can now be set in the pg_options file or interactively with the commands:
>
> SET pg_options to 'nofsinc=1';
> SET pg_options to 'nofsinc=0';
>
> There are obviously also the SHOW and RESET pg_options commands.
>
>
> *** src/backend/commands/variable.c.orig Wed May 26 09:02:48 1999
> --- src/backend/commands/variable.c Mon Jun 14 20:45:58 1999
> ***************
> *** 15,20 ****
> --- 15,22 ----
> #include "commands/variable.h"
> #include "utils/builtins.h"
> #include "optimizer/internal.h"
> + #include "utils/trace.h"
> + #include "catalog/pg_shadow.h"
> #include "access/xact.h"
> #ifdef MULTIBYTE
> #include "mb/pg_wchar.h"
> ***************
> *** 581,589 ****
> ExecutorLimit(ALL_TUPLES);
> return (TRUE);
> }
> -
> #endif
>
> /*-----------------------------------------------------------------------*/
>
> struct VariableParsers
> --- 583,622 ----
> ExecutorLimit(ALL_TUPLES);
> return (TRUE);
> }
> #endif
>
> + /*
> + *
> + * Pg_options
> + *
> + */
> + static bool
> + parse_pg_options(const char *value)
> + {
> + if (!superuser()) {
> + elog(ERROR, "Only users with Postgres superuser can set pg_options");
> + }
> + parse_options((char *) value, TRUE);
> + return (TRUE);
> + }
> +
> + static bool
> + show_pg_options(void)
> + {
> + show_options();
> + return (TRUE);
> + }
> +
> + static bool
> + reset_pg_options(void)
> + {
> + if (!superuser()) {
> + elog(ERROR, "Only users with Postgres superuser can set pg_options");
> + }
> + read_pg_options(0);
> + return (TRUE);
> + }
> +
> /*-----------------------------------------------------------------------*/
>
> struct VariableParsers
> ***************
> *** 629,634 ****
> --- 662,670 ----
> "query_limit", parse_query_limit, show_query_limit, reset_query_limit
> },
> #endif
> + {
> + "pg_options", parse_pg_options, show_pg_options, reset_pg_options
> + },
> {
> NULL, NULL, NULL, NULL
> }
> *** src/backend/utils/init/globals.c.orig Wed May 26 09:05:49 1999
> --- src/backend/utils/init/globals.c Mon Jun 14 20:56:34 1999
> ***************
> *** 82,88 ****
> * malloc? XXX */
> char FloatFormat[20] = "%f";
>
> ! bool disableFsync = false;
> bool allowSystemTableMods = false;
> int SortMem = 512;
>
> --- 82,88 ----
> * malloc? XXX */
> char FloatFormat[20] = "%f";
>
> ! /* bool disableFsync = false; */
> bool allowSystemTableMods = false;
> int SortMem = 512;
>
> *** src/include/miscadmin.h.orig Wed May 26 09:06:39 1999
> --- src/include/miscadmin.h Mon Jun 14 20:01:27 1999
> ***************
> *** 22,27 ****
> --- 22,29 ----
> #ifndef MISCADMIN_H
> #define MISCADMIN_H
>
> + #include "utils/trace.h"
> +
> /*****************************************************************************
> * globals.h -- *
> *****************************************************************************/
> ***************
> *** 93,99 ****
> extern char FloatFormat[];
> extern char DateFormat[];
>
> ! extern bool disableFsync;
> extern bool allowSystemTableMods;
> extern int SortMem;
>
> --- 95,103 ----
> extern char FloatFormat[];
> extern char DateFormat[];
>
> ! /* extern bool disableFsync; */
> ! #define disableFsync pg_options[OPT_NOFSYNC]
> !
> extern bool allowSystemTableMods;
> extern int SortMem;
>
> *** src/bin/psql/psqlHelp.h.orig Fri Jun 4 09:00:17 1999
> --- src/bin/psql/psqlHelp.h Mon Jun 14 20:17:45 1999
> ***************
> *** 297,303 ****
> "set run-time environment back to default",
> "\
> \tRESET DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
> ! TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING"},
> {"revoke",
> "revoke access control from a user or group",
> "\
> --- 297,303 ----
> "set run-time environment back to default",
> "\
> \tRESET DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
> ! \t TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING|PG_OPTIONS"},
> {"revoke",
> "revoke access control from a user or group",
> "\
> ***************
> *** 331,336 ****
> --- 331,337 ----
> \tSET KSQO TO 'ON'|'OFF'\n\
> \tSET QUERY_LIMIT TO #\n\
> \tSET TIMEZONE TO 'value'\n\
> + \tSET PG_OPTIONS TO 'value'\n\
> \tSET TRANSACTION ISOLATION LEVEL 'SERIALIZABLE'|'READ COMMITTED'\n\
> \tSET CLIENT_ENCODING|NAMES TO 'EUC_JP'|'SJIS'|'EUC_CN'|'EUC_KR'|'EUC_TW'|\n\
> \t 'BIG5'|'MULE_INTERNAL'|'LATIN1'|'LATIN2'|'LATIN3'|'LATIN4'|'LATIN5'|\n\
> ***************
> *** 342,348 ****
> "show current run-time environment",
> "\
> \tSHOW DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
> ! TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING"},
> {"unlisten",
> "stop listening for notification on a condition name",
> "\
> --- 343,349 ----
> "show current run-time environment",
> "\
> \tSHOW DATESTYLE|COST_HEAP|COST_INDEX|GEQO|KSQO|QUERY_LIMIT|\n\
> ! \t TIMEZONE|XACTISOLEVEL|CLIENT_ENCODING|SERVER_ENCODING|PG_OPTIONS"},
> {"unlisten",
> "stop listening for notification on a condition name",
> "\
> *** src/include/utils/trace.h.orig Sat Jun 12 22:45:23 1999
> --- src/include/utils/trace.h Mon Jun 14 20:50:56 1999
> ***************
> *** 30,38 ****
> --- 30,39 ----
> extern int tprintf(int flag, const char *fmt,...);
> extern int eprintf(const char *fmt,...);
> extern void write_syslog(int level, char *line);
> + extern void show_options(void);
> extern void parse_options(char *str, bool secure);
> extern void read_pg_options(SIGNAL_ARGS);
>
> /*
> * Trace options, used as index into pg_options.
> * Must match the constants in pg_options[].
> ***************
> *** 61,66 ****
> --- 61,67 ----
> TRACE_LOCKRELATION,
> OPT_LOCKREADPRIORITY, /* lock priority, see lock.c */
> OPT_DEADLOCKTIMEOUT, /* deadlock timeout, see proc.c */
> + OPT_NOFSYNC, /* turn fsync off */
> OPT_SYSLOG, /* use syslog for error messages */
> OPT_HOSTLOOKUP, /* enable hostname lookup in ps_status */
> OPT_SHOWPORTNUMBER, /* show port number in ps_status */
> *** src/backend/utils/misc/trace.c.orig Sat Jun 12 22:47:32 1999
> --- src/backend/utils/misc/trace.c Mon Jun 14 20:50:06 1999
> ***************
> *** 70,75 ****
> --- 70,76 ----
> "lock_debug_relid",
> "lock_read_priority", /* lock priority, see lock.c */
> "deadlock_timeout", /* deadlock timeout, see proc.c */
> + "nofsync", /* turn fsync off */
> "syslog", /* use syslog for error messages */
> "hostlookup", /* enable hostname lookup in ps_status */
> "showportnumber", /* show port number in ps_status */
> ***************
> *** 407,412 ****
> --- 407,422 ----
> close(fd);
> }
>
> + void
> + show_options(void)
> + {
> + int i;
> +
> + for (i=0; i<NUM_PG_OPTIONS; i++) {
> + elog(NOTICE, "%s=%d", opt_names[i], pg_options[i]);
> + }
> + }
> +
> /*
> * Local Variables:
> * tab-width: 4
> *** src/backend/bootstrap/bootstrap.c.orig Wed May 26 09:02:25 1999
> --- src/backend/bootstrap/bootstrap.c Mon Jun 14 20:06:00 1999
> ***************
> *** 182,188 ****
> Form_pg_attribute attrtypes[MAXATTR]; /* points to attribute info */
> static char *values[MAXATTR]; /* cooresponding attribute values */
> int numattr; /* number of attributes for cur. rel */
> ! extern bool disableFsync; /* do not fsync the database */
>
> int DebugMode;
> static GlobalMemory nogc = (GlobalMemory) NULL; /* special no-gc mem
> --- 182,188 ----
> Form_pg_attribute attrtypes[MAXATTR]; /* points to attribute info */
> static char *values[MAXATTR]; /* cooresponding attribute values */
> int numattr; /* number of attributes for cur. rel */
> ! /* extern bool disableFsync; */ /* do not fsync the database */
>
> int DebugMode;
> static GlobalMemory nogc = (GlobalMemory) NULL; /* special no-gc mem
>
>
> --
> Massimo Dal Zotto
>
> +----------------------------------------------------------------------+
> | Massimo Dal Zotto email: dz@cs.unitn.it |
> | Via Marconi, 141 phone: ++39-0461534251 |
> | 38057 Pergine Valsugana (TN) www: http://www.cs.unitn.it/~dz/ |
> | Italy pgp: finger dz@tango.cs.unitn.it |
> +----------------------------------------------------------------------+
>
-- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026