Skip to content

Commit 70a3db6

Browse files
committed
Fix locale issue
1 parent 6888547 commit 70a3db6

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

or-entrypoint.sh

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# THIS FILE IS FOR MIGRATION OF EXISTING DB TO TIMESCALEDB IMAGE AS TIMESCALE INIT SCRIPTS AREN'T RUN WHEN DB
44
# ALREADY EXISTS; IT ALSO DOES AN AUTOMATIC REINDEX OF THE DB WHEN OR_REINDEX_COUNTER CHANGES TO SIMPLIFY MIGRATIONS
55
# IT ALSO AUTOMATICALLY HANDLES UPGRADING OF DATABASE AND DURING MAJOR VERSION CHANGES
6+
# BASED ON: https://github.com/pgautoupgrade/docker-pgautoupgrade
67

78
source /docker-entrypoint.sh
89
docker_setup_env
@@ -150,13 +151,39 @@ if [ -n "$DATABASE_ALREADY_EXISTS" ]; then
150151
# Return the error handling back to automatically aborting on non-0 exit status
151152
set -e
152153

154+
# If no initdb arguments were passed to us from the environment, then work out something valid ourselves
155+
if [ "x${POSTGRES_INITDB_ARGS}" != "x" ]; then
156+
echo "------------------------------------------------------------------------------"
157+
echo "Using initdb arguments passed in from the environment: ${POSTGRES_INITDB_ARGS}"
158+
echo "------------------------------------------------------------------------------"
159+
else
160+
echo "-------------------------------------------------"
161+
echo "Remove postmaster.pid file from PG data directory"
162+
echo "-------------------------------------------------"
163+
rm -f "${OLD}"/postmaster.pid
164+
165+
echo "------------------------------------"
166+
echo "Determining our own initdb arguments"
167+
echo "------------------------------------"
168+
COLLATE=unset
169+
CTYPE=unset
170+
ENCODING=unset
171+
COLLATE=$(echo 'SHOW LC_COLLATE' | "/usr/lib/postgresql/${DB_VERSION}/bin/postgres" --single -D "${OLD}" "${POSTGRES_DB}" | grep 'lc_collate = "' | cut -d '"' -f 2)
172+
CTYPE=$(echo 'SHOW LC_CTYPE' | "/usr/lib/postgresql/${DB_VERSION}/bin/postgres" --single -D "${OLD}" "${POSTGRES_DB}" | grep 'lc_ctype = "' | cut -d '"' -f 2)
173+
ENCODING=$(echo 'SHOW SERVER_ENCODING' | "/usr/lib/postgresql/${DB_VERSION}/bin/postgres" --single -D "${OLD}" "${POSTGRES_DB}" | grep 'server_encoding = "' | cut -d '"' -f 2)
174+
POSTGRES_INITDB_ARGS="--locale=${COLLATE} --lc-collate=${COLLATE} --lc-ctype=${CTYPE} --encoding=${ENCODING}"
175+
echo "---------------------------------------------------------------"
176+
echo "The initdb arguments we determined are: ${POSTGRES_INITDB_ARGS}"
177+
echo "---------------------------------------------------------------"
178+
fi
179+
153180
# Initialise the new PostgreSQL database directory
154181
echo "--------------------------------------------------------------------------------------------------------------------"
155-
echo "Initialising new database directory"
182+
echo "Old database using collation settings: '${POSTGRES_INITDB_ARGS}'. Initialising new database with those settings too"
156183
echo "--------------------------------------------------------------------------------------------------------------------"
157-
initdb -D $PGDATA/new
184+
initdb --username="${POSTGRES_USER}" ${POSTGRES_INITDB_ARGS} ${PGDATA}/new/
158185
echo "------------------------------------"
159-
echo "New database directory initialisation complete"
186+
echo "New database initialisation complete"
160187
echo "------------------------------------"
161188

162189
# Change into the PostgreSQL database directory, to avoid a pg_upgrade error about write permissions

0 commit comments

Comments
 (0)