Add a --locale switch to createdb, to ease the creation of databases with
authorAlvaro Herrera
Mon, 10 Nov 2008 16:25:41 +0000 (16:25 +0000)
committerAlvaro Herrera
Mon, 10 Nov 2008 16:25:41 +0000 (16:25 +0000)
different locales.  This is just syntactical sweetener over --lc-collate and
--lc-ctype.  Per discussion.

While at it, properly document --lc-ctype and --lc-collate in SGML docs,
which apparently were forgotten (or purposefully ommited?) when they were
created.

doc/src/sgml/ref/createdb.sgml
src/bin/scripts/createdb.c

index c75042c9b7442e601c5c4a6c384c8d15b7d94192..c8c12e8b067eb09c3c82c9c5cca75f5dff6d47a8 100644 (file)
@@ -1,5 +1,5 @@
 
 
@@ -106,6 +106,35 @@ PostgreSQL documentation
       
      
 
+     
+      
+      
+      
+       
+        Specifies the locale to be used in this database.  This is equivalent
+        to specifying both  and .
+       
+      
+     
+
+     
+      
+      
+       
+        Specifies the LC_COLLATE setting to be used in this database.
+       
+      
+     
+
+     
+      
+      
+       
+        Specifies the LC_CTYPE setting to be used in this database.
+       
+      
+     
+
      
       
       
@@ -142,7 +171,7 @@ PostgreSQL documentation
    
 
    
-    The options ,
+    The options , ,
     , and
      correspond to options of the underlying
     SQL command 
index da216819b63b67387f19dca397f54f030b2c5b06..ee172ad187a4cb00d22870d1db6d7f9e28550e6d 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.27 2008/09/23 09:20:38 heikki Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.28 2008/11/10 16:25:41 alvherre Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -34,6 +34,7 @@ main(int argc, char *argv[])
        {"encoding", required_argument, NULL, 'E'},
        {"lc-collate", required_argument, NULL, 1},
        {"lc-ctype", required_argument, NULL, 2},
+       {"locale", required_argument, NULL, 'l'},
        {NULL, 0, NULL, 0}
    };
 
@@ -54,6 +55,7 @@ main(int argc, char *argv[])
    char       *encoding = NULL;
    char       *lc_collate = NULL;
    char       *lc_ctype = NULL;
+   char       *locale = NULL;
 
    PQExpBufferData sql;
 
@@ -65,7 +67,7 @@ main(int argc, char *argv[])
 
    handle_help_version_opts(argc, argv, "createdb", help);
 
-   while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:", long_options, &optindex)) != -1)
+   while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:l:", long_options, &optindex)) != -1)
    {
        switch (c)
        {
@@ -105,6 +107,9 @@ main(int argc, char *argv[])
            case 2:
                lc_ctype = optarg;
                break;
+           case 'l':
+               locale = optarg;
+               break;
            default:
                fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
                exit(1);
@@ -129,6 +134,24 @@ main(int argc, char *argv[])
            exit(1);
    }
 
+   if (locale)
+   {
+       if (lc_ctype)
+       {
+           fprintf(stderr, _("%s: only one of --locale and --lc-ctype can be specified\n"),
+                   progname);
+           exit(1);
+       }
+       if (lc_collate)
+       {
+           fprintf(stderr, _("%s: only one of --locale and --lc-collate can be specified\n"),
+                   progname);
+           exit(1);
+       }
+       lc_ctype = locale;
+       lc_collate = locale;
+   }
+
    if (encoding)
    {
        if (pg_char_to_encoding(encoding) < 0)
@@ -224,6 +247,7 @@ help(const char *progname)
    printf(_("\nOptions:\n"));
    printf(_("  -D, --tablespace=TABLESPACE  default tablespace for the database\n"));
    printf(_("  -E, --encoding=ENCODING      encoding for the database\n"));
+   printf(_("  -l, --locale=LOCALE          locale settings for the database\n"));
    printf(_("  --lc-collate=LOCALE          LC_COLLATE setting for the database\n"));
    printf(_("  --lc-ctype=LOCALE            LC_CTYPE setting for the database\n"));
    printf(_("  -O, --owner=OWNER            database user to own the new database\n"));