fix: escape all LIKE specials in step-row cleanup
This commit is contained in:
@@ -67,3 +67,26 @@ def test_clear_step_rows_missing_tables_is_noop(tmp_path) -> None:
|
||||
conn.commit()
|
||||
conn.close()
|
||||
_clear_step_rows(str(db), baseline_run_id="infer_adhoc", epoch=1, step=0)
|
||||
|
||||
|
||||
def test_clear_step_rows_like_specials_in_run_id(tmp_path) -> None:
|
||||
"""run_id 含 % 与反斜杠时不通配误删他 run 行(LIKE 全特殊字符转义回归锁)。"""
|
||||
db = tmp_path / "harness.db"
|
||||
conn = sqlite3.connect(db)
|
||||
conn.execute("CREATE TABLE predictions (run_id TEXT, question_id TEXT)")
|
||||
conn.execute("CREATE TABLE traces (run_id TEXT, question_id TEXT)")
|
||||
rows = [
|
||||
(r"we%ird\run_e1_s0", "q1"), # 本 step rollout
|
||||
(r"we%ird\run_e1_s0_gate_x_base", "q2"), # 本 step gate 行
|
||||
(r"weXird\run_e1_s0_gate_x_base", "q3"), # % 若未转义会误匹配此行
|
||||
(r"we%irdXrun_e1_s0_gate_x_base", "q4"), # \ 若未转义会误匹配此行
|
||||
]
|
||||
conn.executemany("INSERT INTO predictions VALUES (?, ?)", rows)
|
||||
conn.executemany("INSERT INTO traces VALUES (?, ?)", rows)
|
||||
conn.commit()
|
||||
conn.close()
|
||||
_clear_step_rows(str(db), baseline_run_id=r"we%ird\run", epoch=1, step=0)
|
||||
conn = sqlite3.connect(db)
|
||||
left = {r[0] for r in conn.execute("SELECT run_id FROM predictions")}
|
||||
conn.close()
|
||||
assert left == {r"weXird\run_e1_s0_gate_x_base", r"we%irdXrun_e1_s0_gate_x_base"}
|
||||
|
||||
Reference in New Issue
Block a user