From 6c1cbb0ef320cc48d3d920cc917e90715e79ab39 Mon Sep 17 00:00:00 2001 From: Matthias Hochmeister Date: Thu, 12 Mar 2026 13:08:26 +0100 Subject: [PATCH] fix: remove volatile NOW() from banner index predicate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PostgreSQL forbids volatile functions in partial index predicates. Replace with two plain indexes on starts_at and ends_at instead — the active-banner filtering is handled in the query WHERE clause. Co-Authored-By: Claude Sonnet 4.6 --- .../database/migrations/025_create_announcement_banners.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/database/migrations/025_create_announcement_banners.sql b/backend/src/database/migrations/025_create_announcement_banners.sql index 4b575a2..0090c3f 100644 --- a/backend/src/database/migrations/025_create_announcement_banners.sql +++ b/backend/src/database/migrations/025_create_announcement_banners.sql @@ -10,5 +10,5 @@ CREATE TABLE IF NOT EXISTS announcement_banners ( created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); -CREATE INDEX idx_banners_active ON announcement_banners (starts_at, ends_at) - WHERE ends_at IS NULL OR ends_at > NOW(); +CREATE INDEX idx_banners_starts_at ON announcement_banners (starts_at); +CREATE INDEX idx_banners_ends_at ON announcement_banners (ends_at);