From f2a5c729b714ea498da63e98de2eb4d5a784793e Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Sun, 10 May 2026 14:27:17 +0900 Subject: [PATCH] =?UTF-8?q?fix(scripts):=20marker=20reprocess=20SQL=20?= =?UTF-8?q?=E2=80=94=20CAST(:payload=20AS=20jsonb)=20=EB=A1=9C=20named-par?= =?UTF-8?q?am=20=EC=B6=A9=EB=8F=8C=20=ED=95=B4=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `:payload::jsonb` 의 `::` postfix 캐스트가 SQLAlchemy text() 의 named-param prefix `:` 와 충돌해 asyncpg syntax error. doc 3757 sample reprocess 시 발견. Co-Authored-By: Claude Opus 4.7 (1M context) --- scripts/marker_reprocess_existing_success.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/marker_reprocess_existing_success.py b/scripts/marker_reprocess_existing_success.py index 04e56c0..48f58a4 100644 --- a/scripts/marker_reprocess_existing_success.py +++ b/scripts/marker_reprocess_existing_success.py @@ -126,9 +126,11 @@ async def run(*, apply: bool, only_ids: set[int] | None, snapshot_csv: str | Non # enqueue — UNIQUE(document_id, stage) WHERE status IN ('pending', 'processing') # 가 있으므로 활성 markdown 행이 없는 doc 만 통과. 충돌 시 silent skip. + # CAST(:payload AS jsonb) — `::jsonb` postfix 캐스트는 SQLAlchemy text() + # 의 named-param prefix `:` 와 충돌해 syntax error 발생. ENQUEUE_SQL = text(""" INSERT INTO processing_queue (document_id, stage, status, payload) - VALUES (:doc_id, 'markdown', 'pending', :payload::jsonb) + VALUES (:doc_id, 'markdown', 'pending', CAST(:payload AS jsonb)) ON CONFLICT DO NOTHING """)