]> granicus.if.org Git - postgresql/commitdiff
Add --template option to createdb script to allow access to WITH TEMPLATE
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Feb 2001 17:53:55 +0000 (17:53 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 18 Feb 2001 17:53:55 +0000 (17:53 +0000)
option of CREATE DATABASE.  In pg_regress, create regression database
from template0 to ensure that any installation-local cruft in template1
will not mess up the tests.

doc/src/sgml/ref/createdb.sgml
src/bin/scripts/createdb
src/test/regress/pg_regress.sh

index d74941d8c812a173e0ef38ab2df2bdbfc7e5ad0c..4466c30548fbb767159bbe4eac804c472b5dbd87 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/createdb.sgml,v 1.16 2000/12/25 23:15:26 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/createdb.sgml,v 1.17 2001/02/18 17:53:54 tgl Exp $
 Postgres documentation
 -->
 
@@ -41,7 +41,7 @@ Postgres documentation
        Specifies the hostname of the machine on which the 
        <application>postmaster</application>
        is running.  If host begins with a slash, it is used 
-       as the directory for the unix domain socket.
+       as the directory for the Unix-domain socket.
        </para>
       </listitem>
      </varlistentry>
@@ -98,17 +98,26 @@ Postgres documentation
       <term>-D, --location <replaceable class="parameter">datadir</replaceable></term>
       <listitem>
        <para>
-       Specifies the alternative database location.  See also <xref
+       Specifies the alternative location for the database.  See also <xref
        linkend="app-initlocation">.
        </para>
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term>-T, --template <replaceable class="parameter">template</replaceable></term>
+      <listitem>
+       <para>
+        Specifies the template database from which to build this database.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term>-E, --encoding <replaceable class="parameter">encoding</replaceable></term>
       <listitem>
        <para>
-        Specifies the character encoding scheme to be used with this database.
+        Specifies the character encoding scheme to be used in this database.
        </para>
       </listitem>
      </varlistentry>
@@ -140,6 +149,12 @@ Postgres documentation
     The options <literal>-h</literal>, <literal>-p</literal>, <literal>-U</literal>,
     <literal>-W</literal>, and <literal>-e</literal> are passed on literally to
     <xref linkend="app-psql">.
+
+    The options <literal>-D</literal>, <literal>-T</literal>, and
+    <literal>-E</literal> are converted into options for the underlying
+    SQL command <xref linkend="SQL-CREATEDATABASE"
+    endterm="SQL-CREATEDATABASE-title">, which see for more information
+    about them.
    </para>
   </refsect2>
 
@@ -168,7 +183,7 @@ Postgres documentation
       <listitem>
        <para>
        The comment/description for the database could not be created.
-       the database itself will have been created already. You can use the
+       The database itself will have been created already. You can use the
        <acronym>SQL</acronym> command <command>COMMENT ON DATABASE</command> to
        create the comment later on.
        </para>
@@ -199,10 +214,10 @@ Postgres documentation
    the <productname>Postgres</productname> interactive terminal
    <xref linkend="APP-PSQL">. Thus, there is nothing
    special about creating databases via this or other methods. This means
-   that the <application>psql</application> must be found by the script and that
-   a database server is running at the targeted host. Also, any default
+   that the <application>psql</application> program must be found by the script and that
+   a database server must be running at the targeted port. Also, any default
    settings and environment variables available to <application>psql</application>
-   and the <application>libpq</application> front-end library do apply.
+   and the <application>libpq</application> front-end library will apply.
   </para>
  </refsect1>
 
index 037566a528a6d54b0b1bc0b2ba11a4f4065fed71..4a695a1590f76a48935227e86db0faeb8ec96d84 100644 (file)
@@ -7,11 +7,12 @@
 #    This program runs psql with the "-c" option to create
 #    the requested database.
 #
-# Copyright (c) 1994, Regents of the University of California
+# Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
+# Portions Copyright (c) 1994, Regents of the University of California
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.13 2001/01/21 05:16:45 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.14 2001/02/18 17:53:54 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -19,6 +20,7 @@ CMDNAME=`basename $0`
 PATHNAME=`echo $0 | sed "s,$CMDNAME\$,,"`
 
 MB=
+TEMPLATE=
 PSQLOPT=
 dbname=
 dbcomment=
@@ -78,6 +80,15 @@ do
         --location=*)
                 dbpath=`echo "$1" | sed 's/^--location=//'`
                 ;;
+       --template|-T)
+               TEMPLATE="$2"
+               shift;;
+        -T*)
+                TEMPLATE=`echo "$1" | sed 's/^-T//'`
+                ;;
+        --template=*)
+                TEMPLATE=`echo "$1" | sed 's/^--template=//'`
+                ;;
        --encoding|-E)
                MB="$2"
                shift;;
@@ -111,6 +122,7 @@ if [ "$usage" ]; then
         echo
        echo "Options:"
        echo "  -D, --location=PATH             Alternative place to store the database"
+       echo "  -T, --template=TEMPLATE         Template database to copy"
        echo "  -E, --encoding=ENCODING         Multibyte encoding for the database"
        echo "  -h, --host=HOSTNAME             Database server host"
        echo "  -p, --port=PORT                 Database server port"
@@ -149,10 +161,12 @@ fi
 # escape the quotes
 dbpath=`echo "$dbpath" | sed "s/'/\\\\\'/g"`
 dbname=`echo "$dbname" | sed 's/\"/\\\"/g'`
+TEMPLATE=`echo "$TEMPLATE" | sed 's/\"/\"\"/g'`
 
 withstring=
 [ "$dbpath" ] &&     withstring="$withstring LOCATION = '$dbpath'"
 [ "$MB" ] &&         withstring="$withstring ENCODING = '$MB'"
+[ "$TEMPLATE" ] &&   withstring="$withstring TEMPLATE = \"$TEMPLATE\""
 [ "$withstring" ] && withstring=" WITH$withstring"
 
 ${PATHNAME}psql $PSQLOPT -d template1 -c "CREATE DATABASE \"$dbname\"$withstring"
index c80239eb62b377d0cc927a23002c38389bd20ee4..0a043ca19acd4ecfb19f6a9b841936a74b7c795a 100644 (file)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.18 2001/01/19 23:43:36 petere Exp $
+# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.19 2001/02/18 17:53:55 tgl Exp $
 
 me=`basename $0`
 : ${TMPDIR=/tmp}
@@ -420,10 +420,12 @@ fi
 
 # ----------
 # Create the regression database
+# We use template0 so that any installation-local cruft in template1
+# will not mess up the tests.
 # ----------
 
 message "creating database \"$dbname\""
-"$bindir/createdb" $encoding_opt $psql_options "$dbname"
+"$bindir/createdb" $encoding_opt $psql_options --template template0 "$dbname"
 if [ $? -ne 0 ]; then
     echo "$me: createdb failed"
     (exit 2); exit