Convert backslash_quote guc to use enum.
authorMagnus Hagander <[email protected]>
Fri, 4 Apr 2008 11:47:19 +0000 (11:47 +0000)
committerMagnus Hagander <[email protected]>
Fri, 4 Apr 2008 11:47:19 +0000 (11:47 +0000)
src/backend/utils/misc/guc.c
src/include/parser/gramparse.h

index 83a2fbdb0c52ed5e4fd21b51b40c0f712e6bfba2..45a3b05fdb92d744dff78a9f543a592f31b35834 100644 (file)
@@ -153,7 +153,6 @@ static bool assign_stage_log_stats(bool newval, bool doit, GucSource source);
 static bool assign_log_stats(bool newval, bool doit, GucSource source);
 static bool assign_transaction_read_only(bool newval, bool doit, GucSource source);
 static const char *assign_canonical_path(const char *newval, bool doit, GucSource source);
-static const char *assign_backslash_quote(const char *newval, bool doit, GucSource source);
 static const char *assign_timezone_abbreviations(const char *newval, bool doit, GucSource source);
 static const char *show_archive_command(void);
 static bool assign_tcp_keepalives_idle(int newval, bool doit, GucSource source);
@@ -253,6 +252,23 @@ static const struct config_enum_entry xmloption_options[] = {
        {NULL, 0}
 };
 
+/*
+ * Although only "on", "off", and "safe_encoding" are documented, we
+ * accept all the likely variants of "on" and "off".
+ */
+static const struct config_enum_entry backslash_quote_options[] = {
+       {"safe_encoding", BACKSLASH_QUOTE_SAFE_ENCODING},
+       {"on", BACKSLASH_QUOTE_ON},
+       {"off", BACKSLASH_QUOTE_OFF},
+       {"true", BACKSLASH_QUOTE_ON},
+       {"false", BACKSLASH_QUOTE_OFF},
+       {"yes", BACKSLASH_QUOTE_ON},
+       {"no", BACKSLASH_QUOTE_OFF},
+       {"1", BACKSLASH_QUOTE_ON},
+       {"0", BACKSLASH_QUOTE_OFF},
+       {NULL, 0}
+};
+
 /*
  * GUC option variables that are exported from this module
  */
@@ -311,7 +327,6 @@ static char *syslog_ident_str;
 static bool phony_autocommit;
 static bool session_auth_is_superuser;
 static double phony_random_seed;
-static char *backslash_quote_string;
 static char *client_encoding_string;
 static char *datestyle_string;
 static char *locale_collate;
@@ -1959,15 +1974,6 @@ static struct config_string ConfigureNamesString[] =
                "", NULL, show_archive_command
        },
 
-       {
-               {"backslash_quote", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
-                       gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
-                       gettext_noop("Valid values are ON, OFF, and SAFE_ENCODING.")
-               },
-               &backslash_quote_string,
-               "safe_encoding", assign_backslash_quote, NULL
-       },
-
        {
                {"client_encoding", PGC_USERSET, CLIENT_CONN_LOCALE,
                        gettext_noop("Sets the client's character set encoding."),
@@ -2419,6 +2425,15 @@ static struct config_string ConfigureNamesString[] =
 
 static struct config_enum ConfigureNamesEnum[] =
 {
+       {
+               {"backslash_quote", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
+                       gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
+                       gettext_noop("Valid values are ON, OFF, and SAFE_ENCODING.")
+               },
+               &backslash_quote,
+               BACKSLASH_QUOTE_SAFE_ENCODING, backslash_quote_options, NULL, NULL
+       },
+
        {
                {"client_min_messages", PGC_USERSET, LOGGING_WHEN,
                        gettext_noop("Sets the message levels that are sent to the client."),
index 32aaf1be57510008a3f75dfc6b54e1ff5a85e7ac..a96c7535f5b7722b175c307f8b389c7ecf8edcae 100644 (file)
@@ -35,7 +35,7 @@ typedef enum
 } BackslashQuoteType;
 
 /* GUC variables in scan.l (every one of these is a bad idea :-() */
-extern BackslashQuoteType backslash_quote;
+extern int backslash_quote;
 extern bool escape_string_warning;
 extern bool standard_conforming_strings;