diff --git a/postgres/CHANGELOG.md b/postgres/CHANGELOG.md index b134cebd0..9613775d1 100644 --- a/postgres/CHANGELOG.md +++ b/postgres/CHANGELOG.md @@ -1,9 +1,8 @@ -## 15.7-37 (29-05-2025) - - BREAKING CHANGE : please backup your database before updating - Automatically restarts immich addons after upgrade - Describe list of databases and extensions in log - Improve upgrade system for postgres and extensions +- Drop vectors from postgres database (not needed) - Switch to new image supporting both vector.rs and VectorChord to support immich https://github.com/immich-app/immich/releases/tag/v1.133.0 ## 15.7-29 (15-02-2025) diff --git a/postgres/config.json b/postgres/config.json index b6a376d44..e932bd3d5 100644 --- a/postgres/config.json +++ b/postgres/config.json @@ -39,5 +39,5 @@ "slug": "postgres", "udev": true, "url": "https://github.com/alexbelgium/hassio-addons/tree/master/postgres", - "version": "15.7-37" + "version": "15.7-38" } diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index 47f6075e1..c26fbdd35 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -84,36 +84,33 @@ install_vchord_and_vectors_for_old_pg() { rm -f "$vectors_deb" } -# ───---- NEW drop_vectors_everywhere ----────────────────────────────── -drop_vectors_everywhere() { - local old_pgver="$1" +# ───---- drop_vectors_extension ----────────────────────────────── +drop_vectors_extension() { + local pgver="$1" + local databases="$2" + local extname="vectors" + local bin_dir="$BINARIES_DIR/$pgver/bin" + local dbs="" - # 1. start the old cluster on a private socket/port - su - postgres -c "$BINARIES_DIR/$old_pgver/bin/pg_ctl \ - -w -D '$PGDATA' -o \"-c config_file=/etc/postgresql/postgresql.conf \ - -c listen_addresses='' -c port=65432\" start" + if [ "$databases" = "all" ]; then + dbs=$(su - postgres -c \ + "$bin_dir/psql -Atc \"SELECT datname FROM pg_database WHERE datistemplate = false AND datallowconn\"" ) + else + dbs="$databases" + fi - # 2. loop over non-template databases - for db in $(su - postgres -c \ - "$BINARIES_DIR/$old_pgver/bin/psql -Atc \ - \"SELECT datname FROM pg_database - WHERE datistemplate = false AND datallowconn\""); do - # does the extension exist? + for db in $dbs; do + # Does the extension exist in this db? if su - postgres -c \ - "$BINARIES_DIR/$old_pgver/bin/psql -d $db -Atc \ - \"SELECT 1 FROM pg_extension WHERE extname='vectors'\"" \ - | grep -q 1; then - bashio::log.warning "Dropping extension vectors from DB $db" + "$bin_dir/psql -d $db -Atc \"SELECT 1 FROM pg_extension WHERE extname='$extname'\"" | grep -q 1; then + bashio::log.warning "Dropping extension $extname from DB $db" su - postgres -c \ - "$BINARIES_DIR/$old_pgver/bin/psql -d $db -c \ - 'DROP EXTENSION vectors CASCADE;'" + "$bin_dir/psql -d $db -c 'DROP EXTENSION $extname CASCADE;'" fi done - - # 3. stop the cluster again - su - postgres -c "$BINARIES_DIR/$old_pgver/bin/pg_ctl -w -D '$PGDATA' stop" } + upgrade_postgres_if_needed() { CLUSTER_VERSION=$(get_pgdata_version) IMAGE_VERSION="$PG_MAJOR_VERSION" @@ -153,7 +150,7 @@ upgrade_postgres_if_needed() { fi # Drop vectors - drop_vectors_everywhere "$CLUSTER_VERSION" + drop_vectors_extension "$CLUSTER_VERSION" all # Create postgresql.conf if not existing cp -n --preserve=mode "/var/postgresql-conf-tpl/postgresql.hdd.conf" /etc/postgresql/postgresql.conf @@ -378,6 +375,9 @@ upgrade_extension_if_needed() { done } +# Drop vectors from the postgres database, this is not needed +drop_vectors_extension "$PG_MAJOR_VERSION" "postgres" + upgrade_extension_if_needed "vectors" upgrade_extension_if_needed "vchord"