From 49ed212af84773f40714f2bb62dbb586ef43a01b Mon Sep 17 00:00:00 2001 From: Mert <101130780+mertalev@users.noreply.github.com> Date: Thu, 19 Jun 2025 17:03:40 +0300 Subject: [PATCH] fix(server): drop vector indices before updating extension (#19283) drop indices before updating --- server/src/repositories/database.repository.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/server/src/repositories/database.repository.ts b/server/src/repositories/database.repository.ts index 94d9029f60..d5f94fe13d 100644 --- a/server/src/repositories/database.repository.ts +++ b/server/src/repositories/database.repository.ts @@ -142,21 +142,29 @@ export class DatabaseRepository { } targetVersion ??= availableVersion; - const isVectors = extension === DatabaseExtension.VECTORS; let restartRequired = false; const diff = semver.diff(installedVersion, targetVersion); + if (!diff) { + return { restartRequired: false }; + } + + await Promise.all([ + this.db.schema.dropIndex(VectorIndex.CLIP).ifExists().execute(), + this.db.schema.dropIndex(VectorIndex.FACE).ifExists().execute(), + ]); + await this.db.transaction().execute(async (tx) => { await this.setSearchPath(tx); await sql`ALTER EXTENSION ${sql.raw(extension)} UPDATE TO ${sql.lit(targetVersion)}`.execute(tx); - if (isVectors && (diff === 'major' || diff === 'minor')) { + if (extension === DatabaseExtension.VECTORS && (diff === 'major' || diff === 'minor')) { await sql`SELECT pgvectors_upgrade()`.execute(tx); restartRequired = true; } }); - if (diff && !restartRequired) { + if (!restartRequired) { await Promise.all([this.reindexVectors(VectorIndex.CLIP), this.reindexVectors(VectorIndex.FACE)]); }