|
1 | 1 | #! /bin/sh |
2 | 2 | #------------------------------------------------------------------------- |
3 | 3 | # |
4 | | -# initdb creates (initializes) aPostgres database cluster (site, |
| 4 | +# initdb creates (initializes) aPostgreSQL database cluster (site, |
5 | 5 | # instance, installation, whatever). A database cluster is a |
6 | | -# collection ofPostgres databases all managed by the same postmaster. |
| 6 | +# collection ofPostgreSQL databases all managed by the same postmaster. |
7 | 7 | # |
8 | 8 | # To create the database cluster, we create the directory that contains |
9 | 9 | # all its data, create the files that hold the global tables, create |
10 | 10 | # a few other control files for it, and create one database: the |
11 | 11 | # template database. |
12 | 12 | # |
13 | | -# The template database is an ordinaryPostgres database. Its data |
14 | | -# never changes, though. It exists to make it easy forPostgres to |
| 13 | +# The template database is an ordinaryPostgreSQL database. Its data |
| 14 | +# never changes, though. It exists to make it easy forPostgreSQL to |
15 | 15 | # create other databases -- it just copies. |
16 | 16 | # |
17 | 17 | # Optionally, we can skip creating the complete database cluster and |
|
23 | 23 | # |
24 | 24 | # Copyright (c) 1994, Regents of the University of California |
25 | 25 | # |
26 | | -# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.106 2000/10/22 17:55:45 pjw Exp $ |
| 26 | +# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.107 2000/10/28 22:14:14 petere Exp $ |
27 | 27 | # |
28 | 28 | #------------------------------------------------------------------------- |
29 | 29 |
|
|
85 | 85 | ifecho"$0"| grep'/'> /dev/null2>&1 |
86 | 86 | then |
87 | 87 | # explicit dir name given |
88 | | -PGPATH=`echo$0| sed's,/[^/]*$,,'`# (dirname command is not portable) |
| 88 | +self_path=`echo$0| sed's,/[^/]*$,,'`# (dirname command is not portable) |
89 | 89 | else |
90 | 90 | # look for it in PATH ('which' command is not portable) |
91 | 91 | fordirin`echo"$PATH"| sed's/:/ /g'` |
|
94 | 94 | [-z"$dir" ]&& dir='.' |
95 | 95 | if [-f"$dir/$CMDNAME" ] |
96 | 96 | then |
97 | | -PGPATH="$dir" |
| 97 | +self_path="$dir" |
98 | 98 | break |
99 | 99 | fi |
100 | 100 | done |
101 | 101 | fi |
102 | 102 |
|
103 | | -if [ x"$PGPATH"= x"" ];then |
104 | | - PGPATH=$bindir |
| 103 | + |
| 104 | +# Check for right version of backend. First we check for an |
| 105 | +# executable in the same directory is this initdb script (presuming |
| 106 | +# the above code worked). Then we fall back to the hard-wired bindir. |
| 107 | +# We do it in this order because during upgrades users might move |
| 108 | +# their trees to backup places, so $bindir might be inaccurate. |
| 109 | + |
| 110 | +if [ x"$self_path"!= x"" ] \ |
| 111 | +&& [-x"$self_path/postgres" ] \ |
| 112 | +&& [ x"`$self_path/postgres --version2>/dev/null`"== x"postgres (PostgreSQL)$VERSION" ] |
| 113 | +then |
| 114 | + PGPATH=$self_path |
| 115 | +elif [-x"$bindir/postgres" ];then |
| 116 | +if [ x"`$bindir/postgres --version2>/dev/null`"== x"postgres (PostgreSQL)$VERSION" ] |
| 117 | +then |
| 118 | + PGPATH=$bindir |
| 119 | +else |
| 120 | +echo"The program '$bindir/postgres' needed by$CMDNAME does not belong to" |
| 121 | +echo"PostgreSQL version$VERSION. Check your installation." |
| 122 | +exit 1 |
| 123 | +fi |
| 124 | +else |
| 125 | +echo"The program 'postgres' is needed by$CMDNAME but was not found in" |
| 126 | +echo"the directory '$bindir'. Check your installation." |
| 127 | +exit 1 |
105 | 128 | fi |
106 | 129 |
|
107 | | -# Check if needed programs actually exist in path |
108 | | -forprogin postgres pg_id |
109 | | -do |
110 | | -if [!-x"$PGPATH/$prog" ] |
111 | | -then |
112 | | -echo"The program\`$prog' needed by$CMDNAME could not be found. It was" |
113 | | -echo"expected at:" |
114 | | -echo"$PGPATH/$prog" |
115 | | -echo"If this is not the correct directory, please start$CMDNAME" |
116 | | -echo"with a full search path. Otherwise make sure that the program" |
117 | | -echo"was installed successfully." |
118 | | -exit 1 |
119 | | -fi |
120 | | -done |
| 130 | + |
| 131 | +# Now we can assume that 'pg_id' belongs to the same version as the |
| 132 | +# verified 'postgres' in the same directory. |
| 133 | +if [!-x"$PGPATH/pg_id" ];then |
| 134 | +echo"The program 'pg_id' is needed by$CMDNAME but was not found in" |
| 135 | +echo"the directory '$PGPATH'. Check your installation." |
| 136 | +exit 1 |
| 137 | +fi |
121 | 138 |
|
122 | 139 |
|
123 | | -# Gotta wait for pg_id existence check above |
124 | 140 | EffectiveUser=`$PGPATH/pg_id -n -u` |
125 | 141 | if [-z"$EffectiveUser" ];then |
126 | | -echo"Couldnot determine current user name. You are really hosed." |
| 142 | +echo"$CMDNAME: couldnot determine current user name" |
127 | 143 | exit 1 |
128 | 144 | fi |
129 | 145 |
|
|
275 | 291 |
|
276 | 292 | if ["$MULTIBYTE" ] |
277 | 293 | then |
278 | | -MULTIBYTEID=`$PGPATH/pg_encoding$MULTIBYTE2> /dev/null` |
| 294 | +MULTIBYTEID=`$PGPATH/pg_encoding$MULTIBYTE` |
279 | 295 | if ["$?"-ne 0 ] |
280 | 296 | then |
281 | 297 | echo"$CMDNAME: pg_encoding failed" |
|
354 | 370 | fi |
355 | 371 | done |
356 | 372 |
|
| 373 | +forfilein"$TEMPLATE1_BKI""$GLOBAL_BKI";do |
| 374 | +if [ x"`sed 1q$file`"!= x"# PostgreSQL$short_version" ];then |
| 375 | +echo"The input file '$file' needed by$CMDNAME does not" |
| 376 | +echo"belong to PostgreSQL$VERSION. Check your installation or specify the" |
| 377 | +echo"correct path using the -L option." |
| 378 | +exit 1 |
| 379 | +fi |
| 380 | +done |
| 381 | + |
357 | 382 |
|
358 | 383 | trap'echo "Caught signal." ; exit_nicely' 1 2 3 15 |
359 | 384 |
|
|