From e851884f88707e9ed154de47bef11cbeff31fce1 Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Mon, 12 May 2025 16:46:40 -0400 Subject: [PATCH] handle different db name --- server/src/decorators.ts | 2 +- server/src/queries/person.repository.sql | 15 --------------- server/src/queries/search.repository.sql | 6 +++--- server/src/repositories/database.repository.ts | 10 ++++++++-- server/src/repositories/person.repository.ts | 1 - 5 files changed, 12 insertions(+), 22 deletions(-) diff --git a/server/src/decorators.ts b/server/src/decorators.ts index 6b34ffcafe..befa2bbb11 100644 --- a/server/src/decorators.ts +++ b/server/src/decorators.ts @@ -116,7 +116,7 @@ export const DummyValue = { DATE: new Date(), TIME_BUCKET: '2024-01-01T00:00:00.000Z', BOOLEAN: true, - VECTOR: JSON.stringify(Array.from({ length: 512 }, () => 0)), + VECTOR: '[1,2,3]', }; export const GENERATE_SQL_KEY = 'generate-sql-key'; diff --git a/server/src/queries/person.repository.sql b/server/src/queries/person.repository.sql index c77d9835fa..ad94fb774e 100644 --- a/server/src/queries/person.repository.sql +++ b/server/src/queries/person.repository.sql @@ -222,21 +222,6 @@ where "person"."ownerId" = $3 and "asset_faces"."deletedAt" is null --- PersonRepository.refreshFaces -with - "added_embeddings" as ( - insert into - "face_search" ("faceId", "embedding") - values - ($1, $2) - ) -select -from - ( - select - 1 - ) as "dummy" - -- PersonRepository.getFacesByIds select "asset_faces".*, diff --git a/server/src/queries/search.repository.sql b/server/src/queries/search.repository.sql index 4df068fe61..bcefb7cbe1 100644 --- a/server/src/queries/search.repository.sql +++ b/server/src/queries/search.repository.sql @@ -84,7 +84,7 @@ limit $7 offset $8 -commit +rollback -- SearchRepository.searchDuplicates begin @@ -115,7 +115,7 @@ from "cte" where "cte"."distance" <= $7 -commit +rollback -- SearchRepository.searchFaces begin @@ -144,7 +144,7 @@ from "cte" where "cte"."distance" <= $4 -commit +rollback -- SearchRepository.searchPlaces select diff --git a/server/src/repositories/database.repository.ts b/server/src/repositories/database.repository.ts index d026d7a2b8..8a2b105ac6 100644 --- a/server/src/repositories/database.repository.ts +++ b/server/src/repositories/database.repository.ts @@ -115,9 +115,10 @@ export class DatabaseRepository { async createExtension(extension: DatabaseExtension): Promise { await sql`CREATE EXTENSION IF NOT EXISTS ${sql.raw(extension)} CASCADE`.execute(this.db); if (extension === DatabaseExtension.VECTORCHORD) { - await sql`ALTER DATABASE immich SET vchordrq.prewarm_dim = '512,640,768,1024,1152,1536'`.execute(this.db); + const db = await this.getDatabaseName(); + await sql`ALTER DATABASE ${sql.table(db)} SET vchordrq.prewarm_dim = '512,640,768,1024,1152,1536'`.execute(this.db); await sql`SET vchordrq.prewarm_dim = '512,640,768,1024,1152,1536'`.execute(this.db); - await sql`ALTER DATABASE immich SET vchordrq.probes = 1`.execute(this.db); + await sql`ALTER DATABASE ${sql.table(db)} SET vchordrq.probes = 1`.execute(this.db); await sql`SET vchordrq.probes = 1`.execute(this.db); } } @@ -270,6 +271,11 @@ export class DatabaseRepository { await sql`SET search_path TO "$user", public, vectors`.execute(tx); } + private async getDatabaseName(): Promise { + const { rows } = await sql<{ db: string }>`SELECT current_database() as db`.execute(this.db); + return rows[0].db; + } + async getDimensionSize(table: string, column = 'embedding'): Promise { const { rows } = await sql<{ dimsize: number }>` SELECT atttypmod as dimsize diff --git a/server/src/repositories/person.repository.ts b/server/src/repositories/person.repository.ts index 789c47ccaf..9433254135 100644 --- a/server/src/repositories/person.repository.ts +++ b/server/src/repositories/person.repository.ts @@ -400,7 +400,6 @@ export class PersonRepository { return results.map(({ id }) => id); } - @GenerateSql({ params: [[], [], [{ faceId: DummyValue.UUID, embedding: DummyValue.VECTOR }]] }) async refreshFaces( facesToAdd: (Insertable & { assetId: string })[], faceIdsToRemove: string[],