From 339bf6cc314279e1b5de9e20db2867ed5fbc8ddd Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 04:44:39 +0000 Subject: [PATCH] fix(core): remove inline ALTER TABLE from postgres_search_repository MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Runtime DDL causes deadlocks when two concurrent index jobs race to ALTER TABLE search_vector_chunks simultaneously. The alembic migration m6h7i8j9k0l1_add_vector_sync_fingerprints.py already handles these schema changes — runtime code should never run ALTER TABLE. Fixes #727 Co-authored-by: Paul Hernandez Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> --- .../repository/postgres_search_repository.py | 41 ------------------- 1 file changed, 41 deletions(-) diff --git a/src/basic_memory/repository/postgres_search_repository.py b/src/basic_memory/repository/postgres_search_repository.py index f9b42569..9eeb2977 100644 --- a/src/basic_memory/repository/postgres_search_repository.py +++ b/src/basic_memory/repository/postgres_search_repository.py @@ -318,47 +318,6 @@ class PostgresSearchRepository(SearchRepositoryBase): """ ) ) - await session.execute( - text( - """ - ALTER TABLE search_vector_chunks - ADD COLUMN IF NOT EXISTS entity_fingerprint TEXT - """ - ) - ) - await session.execute( - text( - """ - ALTER TABLE search_vector_chunks - ADD COLUMN IF NOT EXISTS embedding_model TEXT - """ - ) - ) - await session.execute( - text( - """ - UPDATE search_vector_chunks - SET entity_fingerprint = COALESCE(entity_fingerprint, ''), - embedding_model = COALESCE(embedding_model, '') - """ - ) - ) - await session.execute( - text( - """ - ALTER TABLE search_vector_chunks - ALTER COLUMN entity_fingerprint SET NOT NULL - """ - ) - ) - await session.execute( - text( - """ - ALTER TABLE search_vector_chunks - ALTER COLUMN embedding_model SET NOT NULL - """ - ) - ) # --- Embeddings table (dimension-dependent, created at runtime) --- # Trigger: provider dimensions may differ from what was previously deployed.