From 7c249f08f6edf810ae7dad227bf05e9defa5b324 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sun, 19 Jul 2026 23:15:05 +0200 Subject: [PATCH] fix: correct schema-qualified CREATE INDEX syntax (breaks SQLite install) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CREATE INDEX ... ON chatelet.bookings is invalid SQLite grammar — the schema qualifier must go on the INDEX name, not the table (SQLite attaches the ext DB as schema `chatelet`). Would have failed m001 on every SQLite-backed install (the default backend). Fixed to `CREATE INDEX chatelet.idx_... ON `, matching the restaurant extension. Caught by a real-DB migration smoke (m001+m002 applied, room+booking round-tripped) before tagging; safe to amend m001 in place since chatelet has never been installed anywhere yet. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_019VUQCfdqiLSsFS2jcGnaFD --- migrations.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/migrations.py b/migrations.py index 702b634..4a6cb37 100644 --- a/migrations.py +++ b/migrations.py @@ -86,13 +86,16 @@ async def m001_initial(db): """ ) # Overlap checks scan by room + status; index the hot path. + # NOTE: the schema qualifier goes on the INDEX name, not the table — SQLite + # attaches the ext DB as schema `chatelet`, and `CREATE INDEX ON schema.table` + # is a syntax error there. (Matches the restaurant extension's pattern.) await db.execute( - "CREATE INDEX idx_chatelet_bookings_room_status " - "ON chatelet.bookings (room_id, status);" + "CREATE INDEX chatelet.idx_bookings_room_status " + "ON bookings (room_id, status);" ) await db.execute( - "CREATE INDEX idx_chatelet_bookings_payment_hash " - "ON chatelet.bookings (payment_hash);" + "CREATE INDEX chatelet.idx_bookings_payment_hash " + "ON bookings (payment_hash);" ) # Manual owner-side blocks (maintenance, personal use). @@ -109,7 +112,7 @@ async def m001_initial(db): """ ) await db.execute( - "CREATE INDEX idx_chatelet_blocks_room ON chatelet.blocks (room_id);" + "CREATE INDEX chatelet.idx_blocks_room ON blocks (room_id);" )