fix: backfill meta update - handle existing rows with NOT NULL last_agg_id

This commit is contained in:
root 2026-02-27 15:03:24 +00:00
parent 009f114e4d
commit 3e630166b4

View File

@ -112,13 +112,20 @@ def get_earliest_agg_id(conn: sqlite3.Connection, symbol: str) -> int | None:
def update_earliest_meta(conn: sqlite3.Connection, symbol: str, agg_id: int, time_ms: int): def update_earliest_meta(conn: sqlite3.Connection, symbol: str, agg_id: int, time_ms: int):
# 先检查是否已有该symbol的记录
row = conn.execute("SELECT symbol FROM agg_trades_meta WHERE symbol = ?", (symbol,)).fetchone()
if row:
conn.execute(""" conn.execute("""
INSERT INTO agg_trades_meta (symbol, earliest_agg_id, earliest_time_ms) UPDATE agg_trades_meta SET
VALUES (?, ?, ?) earliest_agg_id = MIN(?, COALESCE(earliest_agg_id, ?)),
ON CONFLICT(symbol) DO UPDATE SET earliest_time_ms = MIN(?, COALESCE(earliest_time_ms, ?))
earliest_agg_id = MIN(excluded.earliest_agg_id, COALESCE(agg_trades_meta.earliest_agg_id, excluded.earliest_agg_id)), WHERE symbol = ?
earliest_time_ms = MIN(excluded.earliest_time_ms, COALESCE(agg_trades_meta.earliest_time_ms, excluded.earliest_time_ms)) """, (agg_id, agg_id, time_ms, time_ms, symbol))
""", (symbol, agg_id, time_ms)) else:
conn.execute("""
INSERT INTO agg_trades_meta (symbol, last_agg_id, last_time_ms, earliest_agg_id, earliest_time_ms)
VALUES (?, ?, ?, ?, ?)
""", (symbol, agg_id, time_ms, agg_id, time_ms))
conn.commit() conn.commit()