Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
77cce4e2
Commit
77cce4e2
authored
Aug 01, 1998
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix duplicate inside initdb.sh
parent
2c6b370e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 addition
and
438 deletions
+1
-438
src/bin/initdb/initdb.sh
src/bin/initdb/initdb.sh
+1
-438
No files found.
src/bin/initdb/initdb.sh
View file @
77cce4e2
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
#
#
#
#
# IDENTIFICATION
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.4
4 1998/07/26 04:31:16 scrappy
Exp $
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.4
5 1998/08/01 22:57:41 momjian
Exp $
#
#
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
...
@@ -436,440 +436,3 @@ echo "copy pg_description from '$GLOBAL_DESCR'" | \
...
@@ -436,440 +436,3 @@ echo "copy pg_description from '$GLOBAL_DESCR'" | \
echo
"vacuum analyze"
|
\
echo
"vacuum analyze"
|
\
postgres
$PGSQL_OPT
template1
>
/dev/null
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: /cvsroot/pgsql/src/bin/initdb/Attic/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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment