diff --git a/postgres_15/rootfs/etc/cont-init.d/99-run.sh b/postgres_15/rootfs/etc/cont-init.d/99-run.sh index 849ce1ee0..9513c688b 100644 --- a/postgres_15/rootfs/etc/cont-init.d/99-run.sh +++ b/postgres_15/rootfs/etc/cont-init.d/99-run.sh @@ -227,34 +227,36 @@ show_db_extensions() { } upgrade_extension_if_needed() { - local extname="$1" - if ! is_extension_available "$extname"; then - bashio::log.info "$extname extension not available on this Postgres instance." - return - fi - local available_version - available_version=$(get_available_extension_version "$extname") - if [ -z "$available_version" ]; then - bashio::log.info "Could not determine available version for $extname." - return - fi - for db in $(get_user_databases); do - local installed_version - installed_version=$(get_installed_extension_version "$extname" "$db") - if [ -n "$installed_version" ]; then - if compare_versions "$installed_version" "$available_version"; then - bashio::log.info "Upgrading $extname in $db from $installed_version to $available_version" - if psql -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" -d "$db" -v ON_ERROR_STOP=1 -c "ALTER EXTENSION $extname UPDATE;"; then - RESTART_NEEDED=true - else - bashio::log.error "Failed to upgrade $extname in $db. Aborting startup." - exit 1 - fi - else - bashio::log.info "$extname in $db already at latest version ($installed_version)" - fi - fi - done + local extname="$1" + if ! is_extension_available "$extname"; then + bashio::log.info "$extname extension not available on this Postgres instance." + return + fi + local available_version + available_version=$(get_available_extension_version "$extname") + if [ -z "$available_version" ]; then + bashio::log.info "Could not determine available version for $extname." + return + fi + for db in $(get_user_databases); do + local installed_version + installed_version=$(get_installed_extension_version "$extname" "$db") + if [ -n "$installed_version" ]; then + if compare_versions "$installed_version" "$available_version"; then + bashio::log.info "Upgrading $extname in $db from $installed_version to $available_version" + if psql -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" -d "$db" -v ON_ERROR_STOP=1 -c "ALTER EXTENSION $extname UPDATE;"; then + bashio::log.info "Reindexing database $db" + psql -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" -d "$db" -v ON_ERROR_STOP=1 -c "REINDEX DATABASE $db;" + RESTART_NEEDED=true + else + bashio::log.error "Failed to upgrade $extname in $db. Aborting startup." + exit 1 + fi + else + bashio::log.info "$extname in $db already at latest version ($installed_version)" + fi + fi + done } upgrade_postgres_if_needed() { @@ -348,41 +350,6 @@ upgrade_postgres_if_needed() { fi } -needs_vectorchord_reindex() { - for db in $(get_user_databases); do - bashio::log.info "Checking for broken vectorchord indexes in $db..." - if ! psql -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" -d "$db" -v ON_ERROR_STOP=1 -c " - SELECT indexrelid::regclass - FROM pg_index i - JOIN pg_class c ON c.oid = i.indexrelid - WHERE pg_get_indexdef(i.indexrelid) ILIKE '%vectorchord%' - LIMIT 1;" >/dev/null 2>&1; then - bashio::log.info "Reindex required in $db (likely vectorchord format error)" - return 0 # Reindex needed - fi - done - return 1 # No reindex needed -} - -reindex_vectorchord_indexes() { - bashio::log.info "Reindexing VectorChord indexes..." - for db in $(get_user_databases); do - affected_indexes=$(psql -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" -d "$db" -At -c " - SELECT indexrelid::regclass::text - FROM pg_index i - JOIN pg_class c ON c.oid = i.indexrelid - WHERE pg_get_indexdef(i.indexrelid) ILIKE '%vectorchord%' - AND indisvalid; - ") - for idx in $affected_indexes; do - bashio::log.info "Reindexing $idx in $db..." - if ! psql -h "$DB_HOSTNAME" -p "$DB_PORT" -U "$DB_USERNAME" -d "$db" -c "REINDEX INDEX CONCURRENTLY \"$idx\";"; then - bashio::log.warning "Failed to reindex $idx in $db. You may need to reindex it manually." - fi - done - done -} - main() { bashio::log.info "Checking for required PostgreSQL cluster upgrade before server start..." if [ -f /config/database/PG_VERSION ]; then @@ -410,11 +377,6 @@ main() { upgrade_extension_if_needed "vectors" upgrade_extension_if_needed "vchord" - if needs_vectorchord_reindex; then - reindex_vectorchord_indexes - else - bashio::log.info "No VectorChord reindexing needed." - fi show_db_extensions if [ "$RESTART_NEEDED" = true ]; then