]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/build-db.sh
Merging in unAPI v2, the bono edition
[working/Evergreen.git] / Open-ILS / src / sql / Pg / build-db.sh
1 #!/bin/sh
2
3 # ---------------------------------------------------------------------------
4 # Store command line args for later use
5 # args: {db-host} {db-port} {db-name} {db-user} {db-password} {verbose}
6 # ---------------------------------------------------------------------------
7 PGHOST=$1
8 PGPORT=$2
9 PGDATABASE=$3
10 PGUSER=$4
11 PGPASSWORD=$5
12 VERBOSE=$6
13 export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD
14
15 # ---------------------------------------------------------------------------
16 # Lookup the database version from the PostgreSQL server.
17 # ---------------------------------------------------------------------------
18 DB_VERSION=`psql -qtc 'show server_version;' | xargs | cut -c1,3`
19 if [ -z "$DB_VERSION" ] || [ `echo $DB_VERSION | grep -c '[^0-9]'` != 0 ]; then
20   cat <<EOM
21 ********************************************************************************
22 * Could not determine the version of PostgreSQL you have installed.  Our best  *
23 * guess was:                                                                   *
24 * $DB_VERSION
25 * which didn't make any sense.  For assistance, please email                   *
26 * open-ils-general@list.georgialibraries.org or join #Evergreen on the         *
27 * freenode IRC network.                                                        *
28 ********************************************************************************
29 EOM
30   exit 1
31 fi
32
33 # ---------------------------------------------------------------------------
34 # Validate fts-config file is available for specified DB_VERSION.
35 # ---------------------------------------------------------------------------
36 if [ -e "000.english.pg$DB_VERSION.fts-config.sql" ]; then
37   fts_config_file="000.english.pg$DB_VERSION.fts-config.sql"
38 else
39   # -------------------------------------------------------------------------
40   # Attempt to auto-detect the latest available config file.
41   # -------------------------------------------------------------------------
42   last_ver=""
43   for i in $(seq 80 99 | sort -rn); do
44     if [ -e "000.english.pg$i.fts-config.sql" ]; then
45       last_ver=$i
46       break
47     fi
48   done
49   if [ -z "$last_ver" ]; then
50     cat <<EOM
51 ********************************************************************************
52 * Cannot locate any configuration files for  full text search config.  This    *
53 * may indicate a problem with your copy of the source files.  We attempted to  *
54 * find files like 000.english.pg83.fts-config.sql in this directory:           *
55 * `pwd` 
56 * but were unsuccessful.  Aborting.                                            *
57 ********************************************************************************
58 EOM
59     exit 1
60   fi
61
62   a=$DB_VERSION  # preserves the text alignment below, in a cheap fashion
63   b=$last_ver    # assuming of course two character DB_VERSION and last_ver
64 cat <<EOM
65 ********************************************************************************
66 * There is no configuration for full text search config, for the database      *
67 * version you have installed ($a).  If you're not really sure why, you should  *
68 * proabably press 'Control-C' now, and abort.  To continue using the latest    *
69 * available version ($b), press enter. For assistance, please email            *
70 * open-ils-general@list.georgialibraries.org or join #Evergreen on the         *
71 * freenode IRC network.                                                        *
72 ********************************************************************************
73 EOM
74   read unused
75   fts_config_file="000.english.pg$last_ver.fts-config.sql"
76 fi
77
78 # ---------------------------------------------------------------------------
79 # This describes the order in which the SQL files will be eval'd by psql.
80 # ---------------------------------------------------------------------------
81 ordered_file_list="
82   $fts_config_file
83
84   001.schema.offline.sql
85
86   002.schema.config.sql
87   002.functions.aggregate.sql
88   002.functions.config.sql
89
90   005.schema.actors.sql
91   006.schema.permissions.sql
92   008.schema.query.sql
93   010.schema.biblio.sql
94   011.schema.authority.sql
95   012.schema.vandelay.sql
96   015.schema.staging.sql
97   020.schema.functions.sql
98   030.schema.metabib.sql
99   040.schema.asset.sql
100   070.schema.container.sql
101   080.schema.money.sql
102   090.schema.action.sql
103   095.schema.booking.sql
104  
105   099.matrix_weights.sql 
106   100.circ_matrix.sql
107   110.hold_matrix.sql
108
109   210.schema.serials.sql
110   200.schema.acq.sql
111   201.acq.audit-functions.sql
112
113   300.schema.staged_search.sql
114   400.schema.action_trigger.sql
115   
116   500.view.cross-schema.sql
117   
118   800.fkeys.sql
119   
120   900.audit-functions.sql
121   901.audit-tables.sql
122   950.data.seed-values.sql
123   951.data.MODS-xsl.sql
124   952.data.MODS3-xsl.sql
125   953.data.MODS32-xsl.sql
126   954.data.MODS33-xsl.sql
127   954.data.marc21expand880.sql
128
129   990.schema.unapi.sql
130   
131   reporter-schema.sql
132   extend-reporter.sql
133
134   999.functions.global.sql
135 "
136
137 # ---------------------------------------------------------------------------
138 # Import files via psql, warn user on error, suggest abort.
139 # ---------------------------------------------------------------------------
140 for sql_file in $ordered_file_list; do
141   # It would be wise to turn this on only if confidence is high that errors in
142   # scripts will result in terminal failures.  Currently, there are a couple
143   # that seem benign.  --asjoyner
144   # export ON_ERROR_STOP=1
145
146   export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD
147   # Hide most of the harmless messages that obscure real problems
148   if [ -z "$VERBOSE" ]; then
149     psql -f $sql_file 2>&1 | grep -v NOTICE | grep -v "^INSERT"
150   else
151     psql -f $sql_file
152   fi
153   if [ $? != 0 ]; then
154     cat <<EOM
155 ********************************************************************************
156 * There was an error with a database configuration file:                       *
157 * $sql_file
158 * It is very likely that your installation will be unsuccessful because of     *
159 * this error.  Press Control-C to abort, or press enter to charge ahead.       *
160 ********************************************************************************
161 EOM
162     read unused
163   fi
164 done
165