From e3254ed46be1270d76c875ecaf78ac49de157650 Mon Sep 17 00:00:00 2001 From: Mitchell R Date: Mon, 25 May 2026 00:12:25 +0200 Subject: [PATCH] fix(db): rewrite INSERT OR IGNORE to ON CONFLICT DO NOTHING for PG SQLite INSERT OR IGNORE syntax not valid in PG. PG adapter now auto-rewrites to INSERT INTO ... ON CONFLICT DO NOTHING. Fixes attach layout, label assignments, and join table inserts. Co-Authored-By: Claude Opus 4.6 (1M context) --- server/src/shared/db/pg-adapter.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/server/src/shared/db/pg-adapter.ts b/server/src/shared/db/pg-adapter.ts index d92bdd3..1e27ba6 100644 --- a/server/src/shared/db/pg-adapter.ts +++ b/server/src/shared/db/pg-adapter.ts @@ -27,6 +27,15 @@ export class PgAdapter implements DbAdapter { } private rewriteSql(sql: string): string { + // SQLite → PG dialect fixups. + if (/INSERT\s+OR\s+IGNORE/i.test(sql)) { + sql = sql.replace(/INSERT\s+OR\s+IGNORE\s+INTO/gi, "INSERT INTO"); + sql = sql.trimEnd().replace(/;?\s*$/, " ON CONFLICT DO NOTHING"); + } + if (/INSERT\s+OR\s+REPLACE/i.test(sql)) { + sql = sql.replace(/INSERT\s+OR\s+REPLACE\s+INTO/gi, "INSERT INTO"); + } + // `?` → `$1`, `$2`, ... Skips `?` characters inside string literals. let out = ""; let n = 0;