Re: [HACKERS] current snapshot
От | t-ishii@sra.co.jp |
---|---|
Тема | Re: [HACKERS] current snapshot |
Дата | |
Msg-id | 199807270650.PAA10433@srapc451.sra.co.jp обсуждение исходный текст |
Ответ на | Re: [HACKERS] current snapshot (The Hermit Hacker <scrappy@hub.org>) |
Ответы |
Re: [HACKERS] current snapshot
(Peter T Mount <peter@retep.org.uk>)
|
Список | pgsql-hackers |
>> Also, if you have a chance, can you run autoconf and check in the new >> configure please? > > Fixed, and committing as I type... Thanks. But I have to request one more thing. bin/initdb/initdb.sh now seems "doubled" and I think half of it should be removed. [srapc451.sra.co.jp]t-ishii{141} diff -c initdb.sh~ initdb.sh *** initdb.sh~ Sun Jul 26 13:31:16 1998 --- initdb.sh Mon Jul 27 15:18:46 1998 *************** *** 435,875 **** postgres $PGSQL_OPT template1 > /dev/null echo "vacuum analyze" | \ postgres $PGSQL_OPT template1 > /dev/null - - #!/bin/sh - #------------------------------------------------------------------------- - # - # initdb.sh-- - # Create (initialize) a Postgres database system. - # - # A database system is a collection of Postgres databases all managed - # by the same postmaster. - # - # To create the database system, we create the directory that contains - # all its data, create the files that hold the global classes, create - # a few other control files for it, and create one database: the - # template database. - # - # The template database is an ordinary Postgres database. Its data - # never changes, though. It exists to make it easy for Postgres to - # create other databases -- it just copies. - # - # Optionally, we can skip creating the database system and just create - # (or replace) the template database. - # - # To create all those classes, we run the postgres (backend) program and - # feed it data from bki files that are in the Postgres library directory. - # - # Copyright (c) 1994, Regents of the University of California - # - # - # IDENTIFICATION - # $Header: /usr/local/cvsroot/pgsql/src/bin/initdb/initdb.sh,v 1.44 1998/07/26 04:31:16 scrappy Exp $ - # - #------------------------------------------------------------------------- - - # ---------------- - # The _fUnKy_..._sTuFf_ gets set when the script is built (with make) - # from parameters set in the make file. - # - # ---------------- - - CMDNAME=`basename $0` - - MB=__MB__ - if [ -n "$MB" ];then - MBID=`pg_encoding $MB` - fi - - # Find the default PGLIB directory (the directory that contains miscellaneous - # files that are part of Postgres). The user-written program postconfig - # outputs variable settings like "PGLIB=/usr/lib/whatever". If it doesn't - # output a PGLIB value, then there is no default and the user must - # specify the pglib option. Postconfig may validly not exist, in which case - # our invocation of it silently fails. - - # The 2>/dev/null is to swallow the "postconfig: not found" message if there - # is no postconfig. - - postconfig_result="`sh -c postconfig 2>/dev/null`" - if [ ! -z "$postconfig_result" ]; then - set -a # Make the following variable assignment exported to environment - eval "$postconfig_result" - set +a # back to normal - fi - - # Set defaults: - debug=0 - noclean=0 - template_only=0 - POSTGRES_SUPERUSERNAME=$USER - - while [ "$#" -gt 0 ] - do - # ${ARG#--username=} is not reliable or available on all platforms - - case "$1" in - --debug|-d) - debug=1 - echo "Running with debug mode on." - ;; - --noclean|-n) - noclean=1 - echo "Running with noclean mode on. " - "Mistakes will not be cleaned up." - ;; - --template|-t) - template_only=1 - echo "updating template1 database only." - ;; - --username=*) - POSTGRES_SUPERUSERNAME="`echo $1 | sed 's/^--username=//'`" - ;; - -u) - shift - POSTGRES_SUPERUSERNAME="$1" - ;; - -u*) - POSTGRES_SUPERUSERNAME="`echo $1 | sed 's/^-u//'`" - ;; - --pgdata=*) - PGDATA="`echo $1 | sed 's/^--pgdata=//'`" - ;; - -r) - shift - PGDATA="$1" - ;; - -r*) - PGDATA="`echo $1 | sed 's/^-r//'`" - ;; - --pglib=*) - PGLIB="`echo $1 | sed 's/^--pglib=//'`" - ;; - -l) - shift - PGLIB="$1" - ;; - -l*) - PGLIB="`echo $1 | sed 's/^-l//'`" - ;; - - --pgencoding=*) - if [ -z "$MB" ];then - echo "MB support seems to be disabled" - exit 100 - fi - mb="`echo $1 | sed 's/^--pgencoding=//'`" - MBID=`pg_encoding $mb` - if [ -z "$MBID" ];then - echo "$mb is not a valid encoding name" - exit 100 - fi - ;; - -e) - if [ -z "$MB" ];then - echo "MB support seems to be disabled" - exit 100 - fi - shift - MBID=`pg_encoding $1` - if [ -z "$MBID" ];then - echo "$1 is not a valid encoding name" - exit 100 - fi - ;; - -e*) - if [ -z "$MB" ];then - echo "MB support seems to be disabled" - exit 100 - fi - mb="`echo $1 | sed 's/^-e//'`" - MBID=`pg_encoding $mb` - if [ -z "$MBID" ];then - echo "$mb is not a valid encoding name" - exit 100 - fi - ;; - *) - echo "Unrecognized option '$1'. Syntax is:" - if [ -z "$MB" ];then - echo "initdb [-t | --template] [-d | --debug]" \ - "[-n | --noclean]" \ - "[-u SUPERUSER | --username=SUPERUSER]" \ - "[-r DATADIR | --pgdata=DATADIR]" \ - "[-l LIBDIR | --pglib=LIBDIR]" - else - echo "initdb [-t | --template] [-d | --debug]" \ - "[-n | --noclean]" \ - "[-u SUPERUSER | --username=SUPERUSER]" \ - "[-r DATADIR | --pgdata=DATADIR]" \ - "[-l LIBDIR | --pglib=LIBDIR]" \ - "[-e ENCODING | --pgencoding=ENCODING]" - fi - exit 100 - esac - shift - done - - #------------------------------------------------------------------------- - # Make sure he told us where to find the Postgres files. - #------------------------------------------------------------------------- - if [ -z "$PGLIB" ]; then - echo "$CMDNAME does not know where to find the files that make up " - echo "Postgres (the PGLIB directory). You must identify the PGLIB " - echo "directory either with a --pglib invocation option, or by " - echo "setting the PGLIB environment variable, or by having a program " - echo "called 'postconfig' in your search path that outputs an asignment " - echo "for PGLIB." - exit 20 - fi - - #------------------------------------------------------------------------- - # Make sure he told us where to build the database system - #------------------------------------------------------------------------- - - if [ -z "$PGDATA" ]; then - echo "$CMDNAME: You must identify the PGDATA directory, where the data" - echo "for this database system will reside. Do this with either a" - echo "--pgdata invocation option or a PGDATA environment variable." - echo - exit 20 - fi - - TEMPLATE=$PGLIB/local1_template1.bki.source - GLOBAL=$PGLIB/global1.bki.source - TEMPLATE_DESCR=$PGLIB/local1_template1.description - GLOBAL_DESCR=$PGLIB/global1.description - PG_HBA_SAMPLE=$PGLIB/pg_hba.conf.sample - PG_GEQO_SAMPLE=$PGLIB/pg_geqo.sample - - - #------------------------------------------------------------------------- - # Find the input files - #------------------------------------------------------------------------- - - for PREREQ_FILE in $TEMPLATE $GLOBAL $PG_HBA_SAMPLE; do - if [ ! -f $PREREQ_FILE ]; then - echo "$CMDNAME does not find the file '$PREREQ_FILE'." - echo "This means you have identified an invalid PGLIB directory." - echo "You specify a PGLIB directory with a --pglib invocation " - echo "option, a PGLIB environment variable, or a postconfig program." - exit 1 - fi - done - - echo "$CMDNAME: using $TEMPLATE as input to create the template database." - if [ $template_only -eq 0 ]; then - echo "$CMDNAME: using $GLOBAL as input to create the global classes." - echo "$CMDNAME: using $PG_HBA_SAMPLE as the host-based authentication" \ - "control file." - echo - fi - - #--------------------------------------------------------------------------- - # Figure out who the Postgres superuser for the new database system will be. - #--------------------------------------------------------------------------- - - if [ -z "$POSTGRES_SUPERUSERNAME" ]; then - echo "Can't tell what username to use. You don't have the USER" - echo "environment variable set to your username and didn't specify the " - echo "--username option" - exit 1 - fi - - POSTGRES_SUPERUID=`pg_id $POSTGRES_SUPERUSERNAME` - - if [ $POSTGRES_SUPERUID = NOUSER ]; then - echo "Valid username not given. You must specify the username for " - echo "the Postgres superuser for the database system you are " - echo "initializing, either with the --username option or by default " - echo "to the USER environment variable." - exit 10 - fi - - if [ $POSTGRES_SUPERUID -ne `pg_id` -a `pg_id` -ne 0 ]; then - echo "Only the unix superuser may initialize a database with a different" - echo "Postgres superuser. (You must be able to create files that belong" - echo "to the specified unix user)." - exit 2 - fi - - echo "We are initializing the database system with username" \ - "$POSTGRES_SUPERUSERNAME (uid=$POSTGRES_SUPERUID)." - echo "This user will own all the files and must also own the server process." - echo - - # ----------------------------------------------------------------------- - # Create the data directory if necessary - # ----------------------------------------------------------------------- - - # umask must disallow access to group, other for files and dirs - umask 077 - - if [ -f "$PGDATA/PG_VERSION" ]; then - if [ $template_only -eq 0 ]; then - echo "$CMDNAME: error: File $PGDATA/PG_VERSION already exists." - echo "This probably means initdb has already been run and the " - echo "database system already exists." - echo - echo "If you want to create a new database system, either remove " - echo "the $PGDATA directory or run initdb with a --pgdata option " - echo "other than $PGDATA." - exit 1 - fi - else - if [ ! -d $PGDATA ]; then - echo "Creating Postgres database system directory $PGDATA" - echo - mkdir $PGDATA - if [ $? -ne 0 ]; then exit 5; fi - fi - if [ ! -d $PGDATA/base ]; then - echo "Creating Postgres database system directory $PGDATA/base" - echo - mkdir $PGDATA/base - if [ $? -ne 0 ]; then exit 5; fi - fi - fi - - #---------------------------------------------------------------------------- - # Create the template1 database - #---------------------------------------------------------------------------- - - rm -rf $PGDATA/base/template1 - mkdir $PGDATA/base/template1 - - if [ "$debug" -eq 1 ]; then - BACKEND_TALK_ARG="-d" - else - BACKEND_TALK_ARG="-Q" - fi - - BACKENDARGS="-boot -C -F -D$PGDATA $BACKEND_TALK_ARG" - - echo "$CMDNAME: creating template database in $PGDATA/base/template1" - echo "Running: postgres $BACKENDARGS template1" - - cat $TEMPLATE \ - | sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \ - -e "s/PGUID/$POSTGRES_SUPERUID/" \ - | postgres $BACKENDARGS template1 - - if [ $? -ne 0 ]; then - echo "$CMDNAME: could not create template database" - if [ $noclean -eq 0 ]; then - echo "$CMDNAME: cleaning up by wiping out $PGDATA/base/template1" - rm -rf $PGDATA/base/template1 - else - echo "$CMDNAME: cleanup not done because noclean options was used." - fi - exit 1; - fi - - echo - - pg_version $PGDATA/base/template1 - - #---------------------------------------------------------------------------- - # Create the global classes, if requested. - #---------------------------------------------------------------------------- - - if [ $template_only -eq 0 ]; then - echo "Creating global classes in $PG_DATA/base" - echo "Running: postgres $BACKENDARGS template1" - - cat $GLOBAL \ - | sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \ - -e "s/PGUID/$POSTGRES_SUPERUID/" \ - | postgres $BACKENDARGS template1 - - if (test $? -ne 0) - then - echo "$CMDNAME: could not create global classes." - if (test $noclean -eq 0); then - echo "$CMDNAME: cleaning up." - rm -rf $PGDATA - else - echo "$CMDNAME: cleanup not done (noclean mode set)." - fi - exit 1; - fi - - echo - - pg_version $PGDATA - - cp $PG_HBA_SAMPLE $PGDATA/pg_hba.conf - cp $PG_GEQO_SAMPLE $PGDATA/pg_geqo.sample - - echo "Adding template1 database to pg_database..." - - echo "open pg_database" > /tmp/create.$$ - if [ -z "$MB" ];then - echo "insert (template1 $POSTGRES_SUPERUID template1)" >> /tmp/create.$$ - else - echo "insert (template1 $POSTGRES_SUPERUID $MBID template1)" >> /tmp/create.$$ - fi - #echo "show" >> /tmp/create.$$ - echo "close pg_database" >> /tmp/create.$$ - - echo "Running: postgres $BACKENDARGS template1 < /tmp/create.$$" - - postgres $BACKENDARGS template1 < /tmp/create.$$ - - if [ $? -ne 0 ]; then - echo "$CMDNAME: could not log template database" - if [ $noclean -eq 0 ]; then - echo "$CMDNAME: cleaning up." - rm -rf $PGDATA - else - echo "$CMDNAME: cleanup not done (noclean mode set)." - fi - exit 1; - fi - rm -f /tmp/create.$$ - fi - - echo - - PGSQL_OPT="-o /dev/null -F -Q -D$PGDATA" - - # If the COPY is first, the VACUUM generates an error, so we vacuum first - echo "vacuuming template1" - echo "vacuum" | postgres $PGSQL_OPT template1 > /dev/null - - echo "COPY pg_shadow TO '$PGDATA/pg_pwd' USING DELIMITERS '\\t'" | \ - postgres $PGSQL_OPT template1 > /dev/null - - echo "creating public pg_user view" - echo "CREATE TABLE xpg_user ( \ - usename name, \ - usesysid int4, \ - usecreatedb bool, \ - usetrace bool, \ - usesuper bool, \ - usecatupd bool, \ - passwd text, \ - valuntil abstime);" | postgres $PGSQL_OPT template1 > /dev/null - - #move it into pg_user - echo "UPDATE pg_class SET relname = 'pg_user' WHERE relname = 'xpg_user';" |\ - postgres $PGSQL_OPT template1 > /dev/null - echo "UPDATE pg_type SET typname = 'pg_user' WHERE typname = 'xpg_user';" |\ - postgres $PGSQL_OPT template1 > /dev/null - mv $PGDATA/base/template1/xpg_user $PGDATA/base/template1/pg_user - - echo "CREATE RULE _RETpg_user AS ON SELECT TO pg_user DO INSTEAD \ - SELECT usename, usesysid, usecreatedb, usetrace, \ - usesuper, usecatupd, '********'::text as passwd, \ - valuntil FROM pg_shadow;" | \ - postgres $PGSQL_OPT template1 > /dev/null - echo "REVOKE ALL on pg_shadow FROM public" | \ - postgres $PGSQL_OPT template1 > /dev/null - - echo "loading pg_description" - echo "copy pg_description from '$TEMPLATE_DESCR'" | \ - postgres $PGSQL_OPT template1 > /dev/null - echo "copy pg_description from '$GLOBAL_DESCR'" | \ - postgres $PGSQL_OPT template1 > /dev/null - echo "vacuum analyze" | \ - postgres $PGSQL_OPT template1 > /dev/null --- 435,437 ----
В списке pgsql-hackers по дате отправления:
Предыдущее
От: "Thomas G. Lockhart"Дата:
Сообщение: Re: [HACKERS] Bogus "Non-functional update" notices