Skip to content

Commit 25d6eae

Browse files
committed
test(080): use deterministic test_date() function instead of CURRENT_DATE
Replace CURRENT_DATE with saga_repro.test_date() function that returns a fixed date ('2026-01-01') for deterministic test output. This prevents test failures due to date drift while still testing that DEFAULT values are properly applied for columns not provided in the source data. This follows the same pattern used in 052_view_current_basis.sql with test_now() for testing current views.
1 parent 8a818ca commit 25d6eae

2 files changed

Lines changed: 19 additions & 14 deletions

File tree

expected/080_temporal_merge_reported_regressions.out

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ GRANT CREATE ON SCHEMA public TO PUBLIC;
2828
\set ECHO all
2929
BEGIN;
3030
CREATE SCHEMA saga_repro;
31+
-- A stable function to override CURRENT_DATE for deterministic testing
32+
CREATE FUNCTION saga_repro.test_date() RETURNS date AS $$ SELECT '2026-01-01'::date $$ LANGUAGE sql;
3133
-- Base table definitions used by both scenarios
3234
CREATE TABLE saga_repro.target_units_template (
3335
unit_ident text NOT NULL,
@@ -895,7 +897,7 @@ CREATE TABLE saga_repro.target_with_audit (
895897
key_col TEXT NOT NULL,
896898
data_col TEXT,
897899
created_at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(),
898-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
900+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
899901
valid_until DATE NOT NULL DEFAULT 'infinity'::date,
900902
valid_range daterange NOT NULL,
901903
PRIMARY KEY (id, valid_range WITHOUT OVERLAPS)
@@ -921,7 +923,7 @@ CREATE TABLE saga_repro.source_without_audit (
921923
row_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
922924
key_col TEXT NOT NULL,
923925
data_col TEXT,
924-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
926+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
925927
valid_until DATE NOT NULL DEFAULT 'infinity'::date
926928
);
927929
INSERT INTO saga_repro.source_without_audit (key_col, data_col) VALUES ('test_key', 'test_data');
@@ -962,7 +964,7 @@ SELECT id, key_col, data_col, created_at IS NOT NULL as has_created_at, valid_fr
962964
FROM saga_repro.target_with_audit;
963965
id | key_col | data_col | has_created_at | valid_from | valid_until
964966
----+----------+-----------+----------------+------------+-------------
965-
1 | test_key | test_data | t | 2026-01-21 | infinity
967+
1 | test_key | test_data | t | 2026-01-01 | infinity
966968
(1 row)
967969

968970
ROLLBACK TO SAVEPOINT scenario_ephemeral_missing_from_source;
@@ -983,7 +985,7 @@ CREATE TABLE saga_repro.target_with_audit_patch (
983985
key_col TEXT NOT NULL,
984986
data_col TEXT,
985987
created_at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(),
986-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
988+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
987989
valid_until DATE NOT NULL DEFAULT 'infinity'::date,
988990
valid_range daterange NOT NULL,
989991
PRIMARY KEY (id, valid_range WITHOUT OVERLAPS)
@@ -1009,7 +1011,7 @@ CREATE TABLE saga_repro.source_without_audit_patch (
10091011
row_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
10101012
key_col TEXT NOT NULL,
10111013
data_col TEXT,
1012-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
1014+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
10131015
valid_until DATE NOT NULL DEFAULT 'infinity'::date
10141016
);
10151017
INSERT INTO saga_repro.source_without_audit_patch (key_col, data_col) VALUES ('test_key_patch', 'test_data_patch');
@@ -1050,7 +1052,7 @@ SELECT id, key_col, data_col, created_at IS NOT NULL as has_created_at, valid_fr
10501052
FROM saga_repro.target_with_audit_patch;
10511053
id | key_col | data_col | has_created_at | valid_from | valid_until
10521054
----+----------------+-----------------+----------------+------------+-------------
1053-
1 | test_key_patch | test_data_patch | t | 2026-01-21 | infinity
1055+
1 | test_key_patch | test_data_patch | t | 2026-01-01 | infinity
10541056
(1 row)
10551057

10561058
ROLLBACK TO SAVEPOINT scenario_ephemeral_missing_patch;
@@ -1079,7 +1081,7 @@ CREATE TABLE saga_repro.target_mixed_ephemeral (
10791081
edit_by_user_id INTEGER NOT NULL,
10801082
edit_at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(),
10811083
edit_comment TEXT,
1082-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
1084+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
10831085
valid_until DATE NOT NULL DEFAULT 'infinity'::date,
10841086
valid_range daterange NOT NULL,
10851087
PRIMARY KEY (id, valid_range WITHOUT OVERLAPS)
@@ -1111,7 +1113,7 @@ CREATE TABLE saga_repro.source_mixed_ephemeral (
11111113
edit_by_user_id INTEGER NOT NULL,
11121114
edit_at TIMESTAMPTZ NOT NULL,
11131115
edit_comment TEXT,
1114-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
1116+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
11151117
valid_until DATE NOT NULL DEFAULT 'infinity'::date
11161118
);
11171119
INSERT INTO saga_repro.source_mixed_ephemeral

sql/080_temporal_merge_reported_regressions.sql

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ BEGIN;
99

1010
CREATE SCHEMA saga_repro;
1111

12+
-- A stable function to override CURRENT_DATE for deterministic testing
13+
CREATE FUNCTION saga_repro.test_date() RETURNS date AS $$ SELECT '2026-01-01'::date $$ LANGUAGE sql;
14+
1215
-- Base table definitions used by both scenarios
1316
CREATE TABLE saga_repro.target_units_template (
1417
unit_ident text NOT NULL,
@@ -580,7 +583,7 @@ CREATE TABLE saga_repro.target_with_audit (
580583
key_col TEXT NOT NULL,
581584
data_col TEXT,
582585
created_at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(),
583-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
586+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
584587
valid_until DATE NOT NULL DEFAULT 'infinity'::date,
585588
valid_range daterange NOT NULL,
586589
PRIMARY KEY (id, valid_range WITHOUT OVERLAPS)
@@ -596,7 +599,7 @@ CREATE TABLE saga_repro.source_without_audit (
596599
row_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
597600
key_col TEXT NOT NULL,
598601
data_col TEXT,
599-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
602+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
600603
valid_until DATE NOT NULL DEFAULT 'infinity'::date
601604
);
602605

@@ -652,7 +655,7 @@ CREATE TABLE saga_repro.target_with_audit_patch (
652655
key_col TEXT NOT NULL,
653656
data_col TEXT,
654657
created_at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(),
655-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
658+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
656659
valid_until DATE NOT NULL DEFAULT 'infinity'::date,
657660
valid_range daterange NOT NULL,
658661
PRIMARY KEY (id, valid_range WITHOUT OVERLAPS)
@@ -668,7 +671,7 @@ CREATE TABLE saga_repro.source_without_audit_patch (
668671
row_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
669672
key_col TEXT NOT NULL,
670673
data_col TEXT,
671-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
674+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
672675
valid_until DATE NOT NULL DEFAULT 'infinity'::date
673676
);
674677

@@ -732,7 +735,7 @@ CREATE TABLE saga_repro.target_mixed_ephemeral (
732735
edit_by_user_id INTEGER NOT NULL,
733736
edit_at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(),
734737
edit_comment TEXT,
735-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
738+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
736739
valid_until DATE NOT NULL DEFAULT 'infinity'::date,
737740
valid_range daterange NOT NULL,
738741
PRIMARY KEY (id, valid_range WITHOUT OVERLAPS)
@@ -754,7 +757,7 @@ CREATE TABLE saga_repro.source_mixed_ephemeral (
754757
edit_by_user_id INTEGER NOT NULL,
755758
edit_at TIMESTAMPTZ NOT NULL,
756759
edit_comment TEXT,
757-
valid_from DATE NOT NULL DEFAULT CURRENT_DATE,
760+
valid_from DATE NOT NULL DEFAULT saga_repro.test_date(),
758761
valid_until DATE NOT NULL DEFAULT 'infinity'::date
759762
);
760763

0 commit comments

Comments
 (0)