From 356d4860e3fdb137833d5de614a8b23a42a627f6 Mon Sep 17 00:00:00 2001 From: wwwwwwwww <526125649@qq.com> Date: Thu, 9 Jul 2026 16:45:47 +0800 Subject: [PATCH] 1 --- ...026070902_add_generated_date_expression_indexes.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/video-gen-api/alembic/versions/2026070902_add_generated_date_expression_indexes.py b/video-gen-api/alembic/versions/2026070902_add_generated_date_expression_indexes.py index f71fafa5..69c0d7ac 100644 --- a/video-gen-api/alembic/versions/2026070902_add_generated_date_expression_indexes.py +++ b/video-gen-api/alembic/versions/2026070902_add_generated_date_expression_indexes.py @@ -24,19 +24,20 @@ def upgrade() -> None: # ======================================== # 2026-07-09 - 生成记录表增加日期表达式索引 # ======================================== - # 使用 (generated_at AT TIME ZONE 'UTC')::date 而非 date(generated_at), - # 因为 date(timestamp with time zone) 在 PostgreSQL 中是 STABLE(依赖会话时区), - # 不能用于索引表达式;转为无时区时间戳后再转 date 才是 IMMUTABLE。 + # 使用 timezone('utc', generated_at)::date 而不是 date(generated_at): + # 当 generated_at 为 timestamptz 时,date() 的结果依赖会话时区,属于 STABLE 函数, + # 无法用于索引表达式。将时区后设再转 date 在语义上等价于 trunc 到天, + # 该表达式是 IMMUTABLE 的,可用于创建函数索引。 op.create_index( 'idx_chat_generation_tasks_generated_date', 'chat_generation_tasks', - [sa.text("(generated_at AT TIME ZONE 'UTC')::date")], + [sa.text("timezone('utc', generated_at)::date")], unique=False, ) op.create_index( 'idx_generation_records_generated_date', 'generation_records', - [sa.text("(generated_at AT TIME ZONE 'UTC')::date")], + [sa.text("timezone('utc', generated_at)::date")], unique=False, )