This commit is contained in:
2026-07-09 16:45:47 +08:00
parent 65f1514e89
commit 356d4860e3
@@ -24,19 +24,20 @@ def upgrade() -> None:
# ======================================== # ========================================
# 2026-07-09 - 生成记录表增加日期表达式索引 # 2026-07-09 - 生成记录表增加日期表达式索引
# ======================================== # ========================================
# 使用 (generated_at AT TIME ZONE 'UTC')::date 而 date(generated_at) # 使用 timezone('utc', generated_at)::date 而不是 date(generated_at)
# 因为 date(timestamp with time zone) 在 PostgreSQL 中是 STABLE(依赖会话时区) # 当 generated_at 为 timestamptz 时,date() 的结果依赖会话时区,属于 STABLE 函数
# 不能用于索引表达式;转为无时区时间戳后再转 date 才是 IMMUTABLE。 # 无法用于索引表达式。将时区后设再转 date 在语义上等价于 trunc 到天,
# 该表达式是 IMMUTABLE 的,可用于创建函数索引。
op.create_index( op.create_index(
'idx_chat_generation_tasks_generated_date', 'idx_chat_generation_tasks_generated_date',
'chat_generation_tasks', 'chat_generation_tasks',
[sa.text("(generated_at AT TIME ZONE 'UTC')::date")], [sa.text("timezone('utc', generated_at)::date")],
unique=False, unique=False,
) )
op.create_index( op.create_index(
'idx_generation_records_generated_date', 'idx_generation_records_generated_date',
'generation_records', 'generation_records',
[sa.text("(generated_at AT TIME ZONE 'UTC')::date")], [sa.text("timezone('utc', generated_at)::date")],
unique=False, unique=False,
) )