1
- #! /usr/bin/env bash
1
+ #! @SHELL_PATH@
2
2
# shellcheck shell=bash
3
3
[ ! -z " $DEBUG " ] && set -x
4
4
@@ -7,6 +7,7 @@ SKIP_MIGRATIONS=false
7
7
PSQL_USER=" postgres"
8
8
MIGRATION_FILE=" "
9
9
DAEMONIZE=false
10
+ GETKEY_SCRIPT=" "
10
11
11
12
# Function to display help
12
13
print_help () {
@@ -16,16 +17,61 @@ print_help() {
16
17
echo " --skip-migrations Skip running migrations and SQL statements"
17
18
echo " --migration-file FILE Provide a custom migration script"
18
19
echo " --user USER Specify the user/role to use (default: postgres)"
20
+ echo " --getkey-script SCRIPT Provide a custom path to the PGSODIUM_GETKEY_SCRIPT"
19
21
echo " -h, --help Show this help message"
20
22
echo
21
23
echo " VERSION must be one of: 15, 16, orioledb-17"
22
24
echo " PORT is optional (default: @PGSQL_DEFAULT_PORT@)"
23
25
}
24
26
27
+ # start_postgres() {
28
+ # local mode=$1
29
+ # local LOG_DIR="${DATDIR}_logs"
30
+ # mkdir -p "$LOG_DIR"
31
+ # local LOG_FILE="$LOG_DIR/postgres.log"
32
+ # touch "$LOG_FILE"
33
+
34
+ # if [ "$mode" = "daemon" ]; then
35
+ # # Start in background but follow logs
36
+ # pg_ctl start -D "$DATDIR" -l "$LOG_FILE" -W \
37
+ # -o "--config-file=$DATDIR/postgresql.conf -p $PORTNO -k $DATDIR/tmp"
38
+ # local PG_STATUS=$?
39
+
40
+ # echo "PostgreSQL startup output:"
41
+ # cat "$LOG_FILE"
42
+
43
+ # return $PG_STATUS
44
+ # else
45
+ # # Foreground mode
46
+ # exec postgres --config-file="$DATDIR/postgresql.conf" -p "$PORTNO" -D "$DATDIR" -k "/tmp" -F
47
+ # fi
48
+ # }
49
+
25
50
start_postgres () {
26
51
local mode=$1
52
+ local LOG_DIR=" ${DATDIR} _logs"
53
+ mkdir -p " $LOG_DIR "
54
+ local LOG_FILE=" $LOG_DIR /postgres.log"
55
+ touch " $LOG_FILE "
27
56
if [ " $mode " = " daemon" ]; then
28
- pg_ctl start -D " $DATDIR " -l " $DATDIR /logfile" -o " --config-file=$DATDIR /postgresql.conf -p $PORTNO -k $DATDIR /tmp"
57
+ # Start the server
58
+ pg_ctl start -D " $DATDIR " -l " $LOG_FILE " \
59
+ -o " --config-file=$DATDIR /postgresql.conf -p $PORTNO -k $DATDIR /tmp"
60
+
61
+ # Give it a moment to write logs
62
+ sleep 1
63
+
64
+ # Check server status and logs
65
+ if ! pg_ctl status -D " $DATDIR " ; then
66
+ echo " PostgreSQL failed to start. Full logs:"
67
+ cat " $LOG_FILE "
68
+ # You might also want to see the postmaster.pid if it exists
69
+ if [ -f " $DATDIR /postmaster.pid" ]; then
70
+ echo " postmaster.pid contents:"
71
+ cat " $DATDIR /postmaster.pid"
72
+ fi
73
+ return 1
74
+ fi
29
75
else
30
76
# Foreground mode
31
77
exec postgres --config-file=" $DATDIR /postgresql.conf" -p " $PORTNO " -D " $DATDIR " -k " /tmp" -F
@@ -38,6 +84,7 @@ stop_postgres() {
38
84
39
85
trap ' stop_postgres' SIGINT SIGTERM
40
86
87
+ # Parse arguments
41
88
# Parse arguments
42
89
while [[ " $# " -gt 0 ]]; do
43
90
case " $1 " in
@@ -63,6 +110,15 @@ while [[ "$#" -gt 0 ]]; do
63
110
exit 1
64
111
fi
65
112
;;
113
+ --getkey-script)
114
+ if [[ -n " $2 " && ! " $2 " =~ ^- ]]; then
115
+ GETKEY_SCRIPT=" $2 "
116
+ shift 2
117
+ else
118
+ echo " Error: --getkey-script requires a script path"
119
+ exit 1
120
+ fi
121
+ ;;
66
122
--daemonize)
67
123
DAEMONIZE=true
68
124
shift
@@ -90,7 +146,11 @@ while [[ "$#" -gt 0 ]]; do
90
146
;;
91
147
esac
92
148
done
93
-
149
+ if [[ -n " ${GETKEY_SCRIPT:- } " ]]; then
150
+ export PGSODIUM_GETKEY_SCRIPT=" $GETKEY_SCRIPT "
151
+ else
152
+ PGSODIUM_GETKEY_SCRIPT=" ${PGSODIUM_GETKEY_SCRIPT:-@ PGSODIUM_GETKEY@ } "
153
+ fi
94
154
# Verify version and set binary directory
95
155
if [ " $VERSION " == " 15" ]; then
96
156
echo " Starting server for PSQL 15"
113
173
export PATH=$BINDIR /bin:$PATH
114
174
PGSQL_SUPERUSER=@PGSQL_SUPERUSER@
115
175
PSQL_CONF_FILE=@PSQL_CONF_FILE@
116
- PGSODIUM_GETKEY_SCRIPT=@PGSODIUM_GETKEY@
117
176
PORTNO=" ${PORTNO:-@ PGSQL_DEFAULT_PORT@ } "
118
177
SUPAUTILS_CONFIG_FILE=@SUPAUTILS_CONF_FILE@
119
178
LOGGING_CONFIG_FILE=@LOGGING_CONF_FILE@
@@ -140,6 +199,9 @@ export LANGUAGE=en_US.UTF-8
140
199
export LC_ALL=en_US.UTF-8
141
200
export LC_CTYPE=en_US.UTF-8
142
201
export KEY_FILE=" $DATDIR /pgsodium.key"
202
+ echo " KEY_FILE: $KEY_FILE "
203
+ echo " KEY_FILE contents:"
204
+ cat " $KEY_FILE "
143
205
144
206
echo " PGSODIUM_GETKEY_SCRIPT: $PGSODIUM_GETKEY_SCRIPT "
145
207
echo " NOTE: using port $PORTNO for server"
0 commit comments