fix: backfill meta update - handle existing rows with NOT NULL last_agg_id
This commit is contained in:
parent
009f114e4d
commit
3e630166b4
@ -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):
|
||||
conn.execute("""
|
||||
INSERT INTO agg_trades_meta (symbol, earliest_agg_id, earliest_time_ms)
|
||||
VALUES (?, ?, ?)
|
||||
ON CONFLICT(symbol) DO UPDATE SET
|
||||
earliest_agg_id = MIN(excluded.earliest_agg_id, COALESCE(agg_trades_meta.earliest_agg_id, excluded.earliest_agg_id)),
|
||||
earliest_time_ms = MIN(excluded.earliest_time_ms, COALESCE(agg_trades_meta.earliest_time_ms, excluded.earliest_time_ms))
|
||||
""", (symbol, agg_id, time_ms))
|
||||
# 先检查是否已有该symbol的记录
|
||||
row = conn.execute("SELECT symbol FROM agg_trades_meta WHERE symbol = ?", (symbol,)).fetchone()
|
||||
if row:
|
||||
conn.execute("""
|
||||
UPDATE agg_trades_meta SET
|
||||
earliest_agg_id = MIN(?, COALESCE(earliest_agg_id, ?)),
|
||||
earliest_time_ms = MIN(?, COALESCE(earliest_time_ms, ?))
|
||||
WHERE symbol = ?
|
||||
""", (agg_id, agg_id, time_ms, time_ms, symbol))
|
||||
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()
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user