diff --git a/backend/internal/repository/usage_log_repo_integration_test.go b/backend/internal/repository/usage_log_repo_integration_test.go index e1c8085e..51964782 100644 --- a/backend/internal/repository/usage_log_repo_integration_test.go +++ b/backend/internal/repository/usage_log_repo_integration_test.go @@ -311,7 +311,7 @@ func (s *UsageLogRepoSuite) TestDashboardStatsWithRange_Fallback() { now := time.Now().UTC() todayStart := truncateToDayUTC(now) rangeStart := todayStart.Add(-24 * time.Hour) - rangeEnd := now + rangeEnd := now.Add(1 * time.Second) user1 := mustCreateUser(s.T(), s.client, &service.User{Email: "range-u1@test.com"}) user2 := mustCreateUser(s.T(), s.client, &service.User{Email: "range-u2@test.com"}) diff --git a/backend/migrations/035_usage_logs_partitioning.sql b/backend/migrations/035_usage_logs_partitioning.sql index 5919b5c3..e25a105e 100644 --- a/backend/migrations/035_usage_logs_partitioning.sql +++ b/backend/migrations/035_usage_logs_partitioning.sql @@ -1,6 +1,6 @@ -- usage_logs monthly partition bootstrap. --- Only converts to partitioned table when usage_logs is empty. --- Existing installations with data require a manual migration plan. +-- Only creates partitions when usage_logs is already partitioned. +-- Converting usage_logs to a partitioned table requires a manual migration plan. DO $$ DECLARE @@ -20,8 +20,8 @@ BEGIN IF NOT is_partitioned THEN SELECT EXISTS(SELECT 1 FROM usage_logs LIMIT 1) INTO has_data; IF NOT has_data THEN - EXECUTE 'ALTER TABLE usage_logs PARTITION BY RANGE (created_at)'; - is_partitioned := TRUE; + -- Automatic conversion is intentionally skipped; see manual migration plan. + RAISE NOTICE 'usage_logs is not partitioned; skip automatic partitioning'; END IF; END IF;