@@ -40,6 +40,10 @@ LOG_FILE="/var/log/pg-upgrade-initiate.log"
40
40
POST_UPGRADE_EXTENSION_SCRIPT=" /tmp/pg_upgrade/pg_upgrade_extensions.sql"
41
41
OLD_PGVERSION=$( run_sql -A -t -c " SHOW server_version;" )
42
42
43
+ SERVER_LC_COLLATE=$( run_sql -A -t -c " SHOW lc_collate;" )
44
+ SERVER_LC_CTYPE=$( run_sql -A -t -c " SHOW lc_ctype;" )
45
+ SERVER_ENCODING=$( run_sql -A -t -c " SHOW server_encoding;" )
46
+
43
47
POSTGRES_CONFIG_PATH=" /etc/postgresql/postgresql.conf"
44
48
PGBINOLD=" /usr/lib/postgresql/bin"
45
49
PGLIBOLD=" /usr/lib/postgresql/lib"
@@ -268,8 +272,11 @@ function initiate_upgrade {
268
272
echo " 4. Setup locale if required"
269
273
if ! grep -q " ^en_US.UTF-8" /etc/locale.gen ; then
270
274
echo " en_US.UTF-8 UTF-8" >> /etc/locale.gen
271
- locale-gen
272
275
fi
276
+ if ! grep -q " ^C.UTF-8" /etc/locale.gen ; then
277
+ echo " C.UTF-8 UTF-8" >> /etc/locale.gen
278
+ fi
279
+ locale-gen
273
280
274
281
if [ -z " $IS_CI " ] && [ -z " $IS_LOCAL_UPGRADE " ]; then
275
282
# awk NF==3 prints lines with exactly 3 fields, which are the block devices currently not mounted anywhere
@@ -345,7 +352,12 @@ function initiate_upgrade {
345
352
echo " 9. Creating new data directory, initializing database"
346
353
chown -R postgres:postgres " $MOUNT_POINT /"
347
354
rm -rf " ${PGDATANEW:? } /"
348
- su -c " $PGBINNEW /initdb -L $PGSHARENEW -D $PGDATANEW /" -s " $SHELL " postgres
355
+
356
+ if [ " $IS_NIX_UPGRADE " = " true" ]; then
357
+ LC_ALL=en_US.UTF-8 LC_CTYPE=$SERVER_LC_CTYPE LC_COLLATE=$SERVER_LC_COLLATE LANGUAGE=en_US.UTF-8 LANG=en_US.UTF-8 LOCALE_ARCHIVE=/usr/lib/locale/locale-archive su -c " . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && $PGBINNEW /initdb --encoding=$SERVER_ENCODING --lc-collate=$SERVER_LC_COLLATE --lc-ctype=$SERVER_LC_CTYPE -L $PGSHARENEW -D $PGDATANEW /" -s " $SHELL " postgres
358
+ else
359
+ su -c " $PGBINNEW /initdb -L $PGSHARENEW -D $PGDATANEW /" -s " $SHELL " postgres
360
+ fi
349
361
350
362
UPGRADE_COMMAND=$( cat << EOF
351
363
time ${PGBINNEW} /pg_upgrade \
363
375
364
376
if [ " $IS_NIX_BASED_SYSTEM " = " true" ]; then
365
377
UPGRADE_COMMAND=" . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && $UPGRADE_COMMAND "
366
- fi
367
-
368
- su -c " $UPGRADE_COMMAND --check" -s " $SHELL " postgres
378
+ fi
379
+ LC_ALL=en_US.UTF-8 LC_CTYPE=$SERVER_LC_CTYPE LC_COLLATE=$SERVER_LC_COLLATE LANGUAGE=en_US.UTF-8 LANG=en_US.UTF-8 LOCALE_ARCHIVE=/usr/lib/locale/locale-archive su -pc " $UPGRADE_COMMAND --check" -s " $SHELL " postgres
369
380
370
381
echo " 10. Stopping postgres; running pg_upgrade"
371
382
# Extra work to ensure postgres is actually stopped
381
392
CI_stop_postgres
382
393
fi
383
394
384
- if [ " $IS_NIX_BASED_SYSTEM " = " true" ]; then
385
- LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LANG=en_US.UTF-8 LOCALE_ARCHIVE=/usr/lib/locale/locale-archive su -pc " $UPGRADE_COMMAND " -s " $SHELL " postgres
386
- else
387
- su -c " $UPGRADE_COMMAND " -s " $SHELL " postgres
388
- fi
395
+ LC_ALL=en_US.UTF-8 LC_CTYPE=$SERVER_LC_CTYPE LC_COLLATE=$SERVER_LC_COLLATE LANGUAGE=en_US.UTF-8 LANG=en_US.UTF-8 LOCALE_ARCHIVE=/usr/lib/locale/locale-archive su -pc " $UPGRADE_COMMAND " -s " $SHELL " postgres
389
396
390
397
# copying custom configurations
391
398
echo " 11. Copying custom configurations"
0 commit comments