From ea8f9d83d421fd1ec628dc1868f0bedefc4ec5ff Mon Sep 17 00:00:00 2001 From: alexbelgium Date: Sun, 25 May 2025 16:11:02 +0200 Subject: [PATCH 01/11] update --- immich/rootfs/etc/cont-init.d/99-run.sh | 16 ++-- postgres/CHANGELOG.md | 3 + postgres/build.json | 4 +- postgres/config.json | 2 +- postgres/rootfs/etc/cont-init.d/99-run.sh | 91 ++++++++++++----------- 5 files changed, 60 insertions(+), 56 deletions(-) diff --git a/immich/rootfs/etc/cont-init.d/99-run.sh b/immich/rootfs/etc/cont-init.d/99-run.sh index 3f6c56916..934389a3d 100755 --- a/immich/rootfs/etc/cont-init.d/99-run.sh +++ b/immich/rootfs/etc/cont-init.d/99-run.sh @@ -150,16 +150,16 @@ EOF bashio::log.info "Database setup completed successfully." } -# Function to check if vectors extension is enabled -check_vector_extension() { - echo "Checking if 'vectors' extension is enabled..." - RESULT=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectors';") +# Function to check if vectorchord extension is enabled +check_vectorchord_extension() { + echo "Checking if 'vectorchord' extension is enabled..." + RESULT=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectorchord';") - if [[ "$RESULT" == "vectors" ]]; then - echo "✅ 'vectors' extension is enabled." + if [[ "$RESULT" == "vectorchord" ]]; then + echo "✅ 'vectorchord' extension is enabled." exit 0 else - bashio::log.warning "❌ 'vectors' extension is NOT enabled." + bashio::log.warning "❌ 'vectorchord' extension is NOT enabled." return 1 fi } @@ -185,4 +185,4 @@ export_db_env setup_root_user setup_database -check_vector_extension +check_vectorchord_extension diff --git a/postgres/CHANGELOG.md b/postgres/CHANGELOG.md index 4ac1d43e0..cb36ddc8b 100644 --- a/postgres/CHANGELOG.md +++ b/postgres/CHANGELOG.md @@ -1,3 +1,6 @@ +- BREAKING CHANGE : please backup your database before updating +- Remove vector.rs and switch to VectorChord to support immich https://github.com/immich-app/immich/releases/tag/v1.133.0 + ## 15.7-29 (15-02-2025) - Minor bugs fixed ## 15.7-28 (15-02-2025) diff --git a/postgres/build.json b/postgres/build.json index 60490c5e2..6405c0efe 100644 --- a/postgres/build.json +++ b/postgres/build.json @@ -1,7 +1,7 @@ { "build_from": { - "aarch64": "tensorchord/pgvecto-rs:pg15-v0.3.0", - "amd64": "tensorchord/pgvecto-rs:pg15-v0.3.0", + "aarch64": "ghcr.io/immich-app/postgres:15-vectorchord0.3.0-pgvectors0.3.0", + "amd64": "ghcr.io/immich-app/postgres:15-vectorchord0.3.0-pgvectors0.3.0", "armv7": "postgres:15-alpine" }, "codenotary": { diff --git a/postgres/config.json b/postgres/config.json index 0f6ae916d..a6a9646f2 100644 --- a/postgres/config.json +++ b/postgres/config.json @@ -6,7 +6,7 @@ ], "backup": "cold", "codenotary": "alexandrep.github@gmail.com", - "description": "Postgres 15 with pgvecto.rs support", + "description": "Postgres 15 with VectorChord support", "environment": { "CONFIG_LOCATION": "/config/postgresql.conf", "PGDATA": "/config/database" diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index 29295d82f..54c04f6c2 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -9,7 +9,7 @@ set -e CONFIG_HOME="/config" PGDATA="${PGDATA:-/config/database}" PG_VERSION_FILE="$PGDATA/pg_major_version" -VECTOR_VERSION_FILE="$PGDATA/pgvector_version" +VECTORCHORD_VERSION_FILE="$PGDATA/vectorchord_version" # Define current PostgreSQL major version PG_MAJOR_VERSION="${PG_MAJOR:-15}" @@ -46,11 +46,11 @@ cd /config || true bashio::log.info "Starting PostgreSQL..." if [ "$(bashio::info.arch)" = "armv7" ]; then - bashio::log.warning "ARMv7 detected: Starting without vectors.so" + bashio::log.warning "ARMv7 detected: Starting without vectorchord.so" docker-entrypoint.sh postgres & true exit 0 else - docker-entrypoint.sh postgres -c shared_preload_libraries=vectors.so -c search_path="public, vectors" & true + docker-entrypoint.sh postgres -c shared_preload_libraries=vectorchord.so -c search_path="public, vectorchord" & true fi ############################### @@ -94,7 +94,7 @@ update_postgres() { export BACKUP_DIR="/config/backups" export PSQL_VERSION="$PG_MAJOR_VERSION" - # Install binaries + # Install binaries apt-get update &>/dev/null install -y procps rsync postgresql-$PG_MAJOR_VERSION postgresql-$OLD_PG_VERSION &>/dev/null @@ -110,65 +110,66 @@ update_postgres() { } ##################################### -# Enable & Upgrade pgvector.rs # +# Enable & Upgrade vectorchord # ##################################### -# Function: Check if 'vectors' extension is enabled -check_vector_extension() { - bashio::log.info "Checking if 'vectors' extension is enabled..." +# Function: Check if 'vectorchord' extension is enabled +check_vectorchord_extension() { + bashio::log.info "Checking if 'vectorchord' extension is enabled..." local result result=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectors';") - if [[ "$result" == "vectors" ]]; then - bashio::log.info "'vectors' extension is enabled." + -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectorchord';") + if [[ "$result" == "vectorchord" ]]; then + bashio::log.info "'vectorchord' extension is enabled." return 0 else - bashio::log.error "'vectors' extension is NOT enabled." + bashio::log.error "'vectorchord' extension is NOT enabled." return 1 fi } -# Function: Enable (or re-create) 'vectors' extension -enable_vector_extension() { - bashio::log.info "Enabling 'vectors' extension..." - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "DROP EXTENSION IF EXISTS vectors; CREATE EXTENSION vectors;" >/dev/null 2>&1 - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "ALTER EXTENSION vectors UPDATE; SELECT pgvectors_upgrade();" >/dev/null 2>&1 +# Function: Enable (or re-create) 'vectorchord' extension +enable_vectorchord_extension() { + bashio::log.info "Enabling 'vectorchord' extension..." + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "DROP EXTENSION IF EXISTS vectorchord;" >/dev/null 2>&1 + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "CREATE EXTENSION vectorchord;" >/dev/null 2>&1 + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "ALTER EXTENSION vectorchord UPDATE;" >/dev/null 2>&1 } -# Function: Store the current pgvector.rs version in a file -store_vector_version() { +# Function: Store the current vectorchord version in a file +store_vectorchord_version() { local version version=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vectors';") - echo "$version" > "$VECTOR_VERSION_FILE" + -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vectorchord';") + echo "$version" > "$VECTORCHORD_VERSION_FILE" } -# Function: Detect previous and new pgvector.rs versions, and upgrade if needed -upgrade_vector_extension() { +# Function: Detect previous and new vectorchord versions, and upgrade if needed +upgrade_vectorchord_extension() { local current_version desired_version - current_version=$(cat "$VECTOR_VERSION_FILE" 2>/dev/null || echo "unknown") + current_version=$(cat "$VECTORCHORD_VERSION_FILE" 2>/dev/null || echo "unknown") desired_version=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vectors';") + -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vectorchord';") if [[ "$current_version" != "$desired_version" ]]; then - bashio::log.warning "Upgrading 'vectors' extension from version $current_version → $desired_version..." - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "ALTER EXTENSION vectors UPDATE;" >/dev/null 2>&1 + bashio::log.warning "Upgrading 'vectorchord' extension from version $current_version → $desired_version..." + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME@$DB_PORT" -c "ALTER EXTENSION vectorchord UPDATE;" >/dev/null 2>&1 - # Cleanup outdated indexes - bashio::log.info "Cleaning up outdated vector indexes..." + # Cleanup outdated indexes if needed (customize this line as needed for your DB schema) + bashio::log.info "Cleaning up outdated vector indexes (if any)..." psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ -c "DROP INDEX IF EXISTS clip_index;" >/dev/null 2>&1 - # Store new pgvector version - echo "$desired_version" > "$VECTOR_VERSION_FILE" + # Store new vectorchord version + echo "$desired_version" > "$VECTORCHORD_VERSION_FILE" else - bashio::log.info "'vectors' extension is already at the latest version ($desired_version)." + bashio::log.info "'vectorchord' extension is already at the latest version ($desired_version)." fi } -# Function: Troubleshoot vector extension -troubleshoot_vector_extension() { - bashio::log.error "Troubleshooting pgvector.rs installation..." +# Function: Troubleshoot vectorchord extension +troubleshoot_vectorchord_extension() { + bashio::log.error "Troubleshooting vectorchord installation..." if ! pg_isready -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" >/dev/null 2>&1; then bashio::log.error "PostgreSQL is not running or unreachable." @@ -177,9 +178,9 @@ troubleshoot_vector_extension() { local ext_check ext_check=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT count(*) FROM pg_available_extensions WHERE name = 'vectors';") + -tAc "SELECT count(*) FROM pg_available_extensions WHERE name = 'vectorchord';") if [[ "$ext_check" -eq 0 ]]; then - bashio::log.error "'vectors' extension is missing. Ensure pgvector.rs is installed." + bashio::log.error "'vectorchord' extension is missing. Ensure vectorchord is installed." exit 1 fi } @@ -188,20 +189,20 @@ troubleshoot_vector_extension() { # Main Extension Handling # ################################### -# Store previous vector version +# Store previous vectorchord version update_postgres -if ! check_vector_extension; then - enable_vector_extension +if ! check_vectorchord_extension; then + enable_vectorchord_extension fi -# Store previous vector version -store_vector_version +# Store previous vectorchord version +store_vectorchord_version -# Upgrade vector extension if needed -upgrade_vector_extension +# Upgrade vectorchord extension if needed +upgrade_vectorchord_extension # Final verification -check_vector_extension || troubleshoot_vector_extension +check_vectorchord_extension || troubleshoot_vectorchord_extension bashio::log.info "All initialization steps completed successfully!" ) & true From f7c968e1b87c942687a55e95466cf209d665a069 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 09:22:46 +0200 Subject: [PATCH 02/11] Vchord --- postgres/rootfs/etc/cont-init.d/99-run.sh | 88 +++++++++++------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index 54c04f6c2..fd796240a 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -9,7 +9,7 @@ set -e CONFIG_HOME="/config" PGDATA="${PGDATA:-/config/database}" PG_VERSION_FILE="$PGDATA/pg_major_version" -VECTORCHORD_VERSION_FILE="$PGDATA/vectorchord_version" +vchord_VERSION_FILE="$PGDATA/vchord_version" # Define current PostgreSQL major version PG_MAJOR_VERSION="${PG_MAJOR:-15}" @@ -46,11 +46,11 @@ cd /config || true bashio::log.info "Starting PostgreSQL..." if [ "$(bashio::info.arch)" = "armv7" ]; then - bashio::log.warning "ARMv7 detected: Starting without vectorchord.so" - docker-entrypoint.sh postgres & true + bashio::log.warning "ARMv7 detected: Starting without extensions" + /usr/local/bin/immich-docker-entrypoint.sh postgres & true exit 0 else - docker-entrypoint.sh postgres -c shared_preload_libraries=vectorchord.so -c search_path="public, vectorchord" & true + /usr/local/bin/immich-docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf fi ############################### @@ -110,66 +110,66 @@ update_postgres() { } ##################################### -# Enable & Upgrade vectorchord # +# Enable & Upgrade vchord # ##################################### -# Function: Check if 'vectorchord' extension is enabled -check_vectorchord_extension() { - bashio::log.info "Checking if 'vectorchord' extension is enabled..." +# Function: Check if 'vchord' extension is enabled +check_vchord_extension() { + bashio::log.info "Checking if 'vchord' extension is enabled..." local result result=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectorchord';") - if [[ "$result" == "vectorchord" ]]; then - bashio::log.info "'vectorchord' extension is enabled." + -tAc "SELECT extname FROM pg_extension WHERE extname = 'vchord';") + if [[ "$result" == "vchord" ]]; then + bashio::log.info "'vchord' extension is enabled." return 0 else - bashio::log.error "'vectorchord' extension is NOT enabled." + bashio::log.error "'vchord' extension is NOT enabled." return 1 fi } -# Function: Enable (or re-create) 'vectorchord' extension -enable_vectorchord_extension() { - bashio::log.info "Enabling 'vectorchord' extension..." - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "DROP EXTENSION IF EXISTS vectorchord;" >/dev/null 2>&1 - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "CREATE EXTENSION vectorchord;" >/dev/null 2>&1 - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "ALTER EXTENSION vectorchord UPDATE;" >/dev/null 2>&1 +# Function: Enable (or re-create) 'vchord' extension +enable_vchord_extension() { + bashio::log.info "Enabling 'vchord' extension..." + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "DROP EXTENSION IF EXISTS vchord;" >/dev/null 2>&1 + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "CREATE EXTENSION vchord;" >/dev/null 2>&1 + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -c "ALTER EXTENSION vchord UPDATE;" >/dev/null 2>&1 } -# Function: Store the current vectorchord version in a file -store_vectorchord_version() { +# Function: Store the current vchord version in a file +store_vchord_version() { local version version=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vectorchord';") - echo "$version" > "$VECTORCHORD_VERSION_FILE" + -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vchord';") + echo "$version" > "$vchord_VERSION_FILE" } -# Function: Detect previous and new vectorchord versions, and upgrade if needed -upgrade_vectorchord_extension() { +# Function: Detect previous and new vchord versions, and upgrade if needed +upgrade_vchord_extension() { local current_version desired_version - current_version=$(cat "$VECTORCHORD_VERSION_FILE" 2>/dev/null || echo "unknown") + current_version=$(cat "$vchord_VERSION_FILE" 2>/dev/null || echo "unknown") desired_version=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vectorchord';") + -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vchord';") if [[ "$current_version" != "$desired_version" ]]; then - bashio::log.warning "Upgrading 'vectorchord' extension from version $current_version → $desired_version..." - psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME@$DB_PORT" -c "ALTER EXTENSION vectorchord UPDATE;" >/dev/null 2>&1 + bashio::log.warning "Upgrading 'vchord' extension from version $current_version → $desired_version..." + psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME@$DB_PORT" -c "ALTER EXTENSION vchord UPDATE;" >/dev/null 2>&1 # Cleanup outdated indexes if needed (customize this line as needed for your DB schema) bashio::log.info "Cleaning up outdated vector indexes (if any)..." psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ -c "DROP INDEX IF EXISTS clip_index;" >/dev/null 2>&1 - # Store new vectorchord version - echo "$desired_version" > "$VECTORCHORD_VERSION_FILE" + # Store new vchord version + echo "$desired_version" > "$vchord_VERSION_FILE" else - bashio::log.info "'vectorchord' extension is already at the latest version ($desired_version)." + bashio::log.info "'vchord' extension is already at the latest version ($desired_version)." fi } -# Function: Troubleshoot vectorchord extension -troubleshoot_vectorchord_extension() { - bashio::log.error "Troubleshooting vectorchord installation..." +# Function: Troubleshoot vchord extension +troubleshoot_vchord_extension() { + bashio::log.error "Troubleshooting vchord installation..." if ! pg_isready -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" >/dev/null 2>&1; then bashio::log.error "PostgreSQL is not running or unreachable." @@ -178,9 +178,9 @@ troubleshoot_vectorchord_extension() { local ext_check ext_check=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ - -tAc "SELECT count(*) FROM pg_available_extensions WHERE name = 'vectorchord';") + -tAc "SELECT count(*) FROM pg_available_extensions WHERE name = 'vchord';") if [[ "$ext_check" -eq 0 ]]; then - bashio::log.error "'vectorchord' extension is missing. Ensure vectorchord is installed." + bashio::log.error "'vchord' extension is missing. Ensure vchord is installed." exit 1 fi } @@ -189,20 +189,20 @@ troubleshoot_vectorchord_extension() { # Main Extension Handling # ################################### -# Store previous vectorchord version +# Store previous vchord version update_postgres -if ! check_vectorchord_extension; then - enable_vectorchord_extension +if ! check_vchord_extension; then + enable_vchord_extension fi -# Store previous vectorchord version -store_vectorchord_version +# Store previous vchord version +store_vchord_version -# Upgrade vectorchord extension if needed -upgrade_vectorchord_extension +# Upgrade vchord extension if needed +upgrade_vchord_extension # Final verification -check_vectorchord_extension || troubleshoot_vectorchord_extension +check_vchord_extension || troubleshoot_vchord_extension bashio::log.info "All initialization steps completed successfully!" ) & true From b83ff6885b1e40ef674ee4c4ed4e59af7ba3c8e4 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 09:23:14 +0200 Subject: [PATCH 03/11] vchord --- immich/rootfs/etc/cont-init.d/99-run.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/immich/rootfs/etc/cont-init.d/99-run.sh b/immich/rootfs/etc/cont-init.d/99-run.sh index 934389a3d..1cb8f01a0 100755 --- a/immich/rootfs/etc/cont-init.d/99-run.sh +++ b/immich/rootfs/etc/cont-init.d/99-run.sh @@ -150,16 +150,16 @@ EOF bashio::log.info "Database setup completed successfully." } -# Function to check if vectorchord extension is enabled -check_vectorchord_extension() { - echo "Checking if 'vectorchord' extension is enabled..." - RESULT=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectorchord';") +# Function to check if vchord extension is enabled +check_vchord_extension() { + echo "Checking if 'vchord' extension is enabled..." + RESULT=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -tAc "SELECT extname FROM pg_extension WHERE extname = 'vchord';") - if [[ "$RESULT" == "vectorchord" ]]; then - echo "✅ 'vectorchord' extension is enabled." + if [[ "$RESULT" == "vchord" ]]; then + echo "✅ 'vchord' extension is enabled." exit 0 else - bashio::log.warning "❌ 'vectorchord' extension is NOT enabled." + bashio::log.warning "❌ 'vchord' extension is NOT enabled." return 1 fi } @@ -185,4 +185,4 @@ export_db_env setup_root_user setup_database -check_vectorchord_extension +check_vchord_extension From ccadc5cdf328229254a91b16635a7716fca7cd6a Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 09:24:56 +0200 Subject: [PATCH 04/11] Check for vectors --- immich/rootfs/etc/cont-init.d/99-run.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/immich/rootfs/etc/cont-init.d/99-run.sh b/immich/rootfs/etc/cont-init.d/99-run.sh index 1cb8f01a0..6bd43a34c 100755 --- a/immich/rootfs/etc/cont-init.d/99-run.sh +++ b/immich/rootfs/etc/cont-init.d/99-run.sh @@ -150,6 +150,20 @@ EOF bashio::log.info "Database setup completed successfully." } +# Function to check if vectors extension is enabled +check_vector_extension() { + echo "Checking if 'vectors' extension is enabled..." + RESULT=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" -tAc "SELECT extname FROM pg_extension WHERE extname = 'vectors';") + + if [[ "$RESULT" == "vectors" ]]; then + echo "✅ 'vectors' extension is enabled." + exit 0 + else + bashio::log.warning "❌ 'vectors' extension is NOT enabled." + return 1 + fi +} + # Function to check if vchord extension is enabled check_vchord_extension() { echo "Checking if 'vchord' extension is enabled..." @@ -160,7 +174,7 @@ check_vchord_extension() { exit 0 else bashio::log.warning "❌ 'vchord' extension is NOT enabled." - return 1 + check_vector_extension fi } From e072293a4a2750ac07333e47101d0199592a4af9 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 10:09:58 +0200 Subject: [PATCH 05/11] Allow both --- immich/rootfs/etc/cont-init.d/99-run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/immich/rootfs/etc/cont-init.d/99-run.sh b/immich/rootfs/etc/cont-init.d/99-run.sh index 6bd43a34c..9f3e804a4 100755 --- a/immich/rootfs/etc/cont-init.d/99-run.sh +++ b/immich/rootfs/etc/cont-init.d/99-run.sh @@ -174,7 +174,7 @@ check_vchord_extension() { exit 0 else bashio::log.warning "❌ 'vchord' extension is NOT enabled." - check_vector_extension + return 1 fi } @@ -199,4 +199,4 @@ export_db_env setup_root_user setup_database -check_vchord_extension +check_vchord_extension || check_vector_extension From 1bb78082de2d62cec64c2557d783adaae4d2a2a6 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 10:12:59 +0200 Subject: [PATCH 06/11] Use normal entrypoint --- postgres/rootfs/etc/cont-init.d/99-run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index fd796240a..2b1d459b0 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -47,10 +47,10 @@ bashio::log.info "Starting PostgreSQL..." if [ "$(bashio::info.arch)" = "armv7" ]; then bashio::log.warning "ARMv7 detected: Starting without extensions" - /usr/local/bin/immich-docker-entrypoint.sh postgres & true + /usr/local/bin/docker-entrypoint.sh postgres & true exit 0 else - /usr/local/bin/immich-docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf + /usr/local/bin/docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf fi ############################### From 009fb4e26e74393a354b55ba9ad7efffd9a08bd9 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 10:13:31 +0200 Subject: [PATCH 07/11] Use diect link --- postgres/rootfs/etc/cont-init.d/99-run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index 2b1d459b0..745a548c9 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -47,10 +47,10 @@ bashio::log.info "Starting PostgreSQL..." if [ "$(bashio::info.arch)" = "armv7" ]; then bashio::log.warning "ARMv7 detected: Starting without extensions" - /usr/local/bin/docker-entrypoint.sh postgres & true + docker-entrypoint.sh postgres & true exit 0 else - /usr/local/bin/docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf + docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf fi ############################### From 29b3a06852442f34715cbf926e4d4e15843dc3a2 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 10:19:24 +0200 Subject: [PATCH 08/11] Allow rest of script to run --- postgres/rootfs/etc/cont-init.d/99-run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index 745a548c9..4e1e3f159 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -50,7 +50,7 @@ if [ "$(bashio::info.arch)" = "armv7" ]; then docker-entrypoint.sh postgres & true exit 0 else - docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf + docker-entrypoint.sh postgres -c config_file=/etc/postgresql/postgresql.conf & true fi ############################### From 390609a2afa099461e18953da3da2493b94b5244 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 10:20:12 +0200 Subject: [PATCH 09/11] Update 99-run.sh --- postgres/rootfs/etc/cont-init.d/99-run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index 4e1e3f159..bf5b44001 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -96,7 +96,7 @@ update_postgres() { # Install binaries apt-get update &>/dev/null - install -y procps rsync postgresql-$PG_MAJOR_VERSION postgresql-$OLD_PG_VERSION &>/dev/null + install -y procps rsync postgresql-"$PG_MAJOR_VERSION" postgresql-"$OLD_PG_VERSION" &>/dev/null # Download and run the upgrade script TMP_SCRIPT=$(mktemp) From 5fef73cf23da8ec135452237064957b6bb33051e Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 10:35:22 +0200 Subject: [PATCH 10/11] align case --- postgres/rootfs/etc/cont-init.d/99-run.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/postgres/rootfs/etc/cont-init.d/99-run.sh b/postgres/rootfs/etc/cont-init.d/99-run.sh index bf5b44001..9dd56b376 100755 --- a/postgres/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres/rootfs/etc/cont-init.d/99-run.sh @@ -9,7 +9,7 @@ set -e CONFIG_HOME="/config" PGDATA="${PGDATA:-/config/database}" PG_VERSION_FILE="$PGDATA/pg_major_version" -vchord_VERSION_FILE="$PGDATA/vchord_version" +VCHORD_VERSION_FILE="$PGDATA/vchord_version" # Define current PostgreSQL major version PG_MAJOR_VERSION="${PG_MAJOR:-15}" @@ -141,13 +141,13 @@ store_vchord_version() { local version version=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vchord';") - echo "$version" > "$vchord_VERSION_FILE" + echo "$version" > "$VCHORD_VERSION_FILE" } # Function: Detect previous and new vchord versions, and upgrade if needed upgrade_vchord_extension() { local current_version desired_version - current_version=$(cat "$vchord_VERSION_FILE" 2>/dev/null || echo "unknown") + current_version=$(cat "$VCHORD_VERSION_FILE" 2>/dev/null || echo "unknown") desired_version=$(psql "postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOSTNAME:$DB_PORT" \ -tAc "SELECT extversion FROM pg_extension WHERE extname = 'vchord';") @@ -161,7 +161,7 @@ upgrade_vchord_extension() { -c "DROP INDEX IF EXISTS clip_index;" >/dev/null 2>&1 # Store new vchord version - echo "$desired_version" > "$vchord_VERSION_FILE" + echo "$desired_version" > "$VCHORD_VERSION_FILE" else bashio::log.info "'vchord' extension is already at the latest version ($desired_version)." fi From f106009c7c0c593ca0d3f698260d9db6b0f83926 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Mon, 26 May 2025 20:39:07 +0200 Subject: [PATCH 11/11] Update config.json --- postgres/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres/config.json b/postgres/config.json index a6a9646f2..30c5aea83 100644 --- a/postgres/config.json +++ b/postgres/config.json @@ -38,5 +38,5 @@ "slug": "postgres", "udev": true, "url": "https://github.com/alexbelgium/hassio-addons/tree/master/postgres", - "version": "15.7-29" + "version": "15.7-30" }