mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-01-11 02:11:01 +01:00
Update 99-run.sh
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user