Skip to content

Commit 87f999c

Browse files
authored
Merge pull request #2723 from danielaskdd/fix/pg-duplicate-table-error-2702
fix(postgres): make PGVectorStorage table/index creation idempotent (fixes #2702)
2 parents 8d1f22b + 2b3a386 commit 87f999c

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

lightrag/kg/postgres_impl.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2442,13 +2442,17 @@ async def _pg_create_table(
24422442
# Replace table name
24432443
ddl = ddl.replace(base_table, table_name)
24442444

2445+
# Make creation idempotent to handle restarts and race conditions
2446+
ddl = ddl.replace("CREATE TABLE ", "CREATE TABLE IF NOT EXISTS ", 1)
24452447
await db.execute(ddl)
24462448

24472449
# Create indexes similar to check_tables() but with safe index names
24482450
# Create index for id column
24492451
id_index_name = _safe_index_name(table_name, "id")
24502452
try:
2451-
create_id_index_sql = f"CREATE INDEX {id_index_name} ON {table_name}(id)"
2453+
create_id_index_sql = (
2454+
f"CREATE INDEX IF NOT EXISTS {id_index_name} ON {table_name}(id)"
2455+
)
24522456
logger.info(
24532457
f"PostgreSQL, Creating index {id_index_name} on table {table_name}"
24542458
)
@@ -2461,9 +2465,7 @@ async def _pg_create_table(
24612465
# Create composite index for (workspace, id)
24622466
workspace_id_index_name = _safe_index_name(table_name, "workspace_id")
24632467
try:
2464-
create_composite_index_sql = (
2465-
f"CREATE INDEX {workspace_id_index_name} ON {table_name}(workspace, id)"
2466-
)
2468+
create_composite_index_sql = f"CREATE INDEX IF NOT EXISTS {workspace_id_index_name} ON {table_name}(workspace, id)"
24672469
logger.info(
24682470
f"PostgreSQL, Creating composite index {workspace_id_index_name} on table {table_name}"
24692471
)

0 commit comments

Comments
 (0)