From 7040374b6f5ef0c32d46fd81e4ccc786fe440e39 Mon Sep 17 00:00:00 2001 From: Ryan Derr <54389874+RyanDerr@users.noreply.github.com> Date: Fri, 13 Jun 2025 08:27:38 -0500 Subject: [PATCH] Postgres 15 -> 16 Migration Update (#5825) * ICU-17235 fix(sql): add explicit casting to resolve Postgres 16 domain constraint changes This migration updates the `wt_alias` and `wt_target_alias` domains to include explicit `::text` casting in their constraints. Postgres 16 enforces stricter domain checks, requiring explicit casts to ensure compatibility. These changes address upgrade issues by aligning the constraints with the stricter evaluation rules. * Add Comment To Old Constraints --- .../oss/postgres/85/02_alias_domain.up.sql | 3 +++ .../96/01_update_wt_alias_constraints.up.sql | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 internal/db/schema/migrations/oss/postgres/96/01_update_wt_alias_constraints.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/85/02_alias_domain.up.sql b/internal/db/schema/migrations/oss/postgres/85/02_alias_domain.up.sql index 0b3922853f..311a30841e 100644 --- a/internal/db/schema/migrations/oss/postgres/85/02_alias_domain.up.sql +++ b/internal/db/schema/migrations/oss/postgres/85/02_alias_domain.up.sql @@ -3,6 +3,9 @@ begin; + -- Constraints wt_alias_too_short, wt_alias_no_suround_spaces, and wt_target_alias_too_long + -- have been updated in migration 96/01 + -- wt_alias defines a type for alias values create domain wt_alias as citext constraint wt_alias_too_short diff --git a/internal/db/schema/migrations/oss/postgres/96/01_update_wt_alias_constraints.up.sql b/internal/db/schema/migrations/oss/postgres/96/01_update_wt_alias_constraints.up.sql new file mode 100644 index 0000000000..9b2b099a22 --- /dev/null +++ b/internal/db/schema/migrations/oss/postgres/96/01_update_wt_alias_constraints.up.sql @@ -0,0 +1,21 @@ +-- Copyright (c) HashiCorp, Inc. +-- SPDX-License-Identifier: BUSL-1.1 + +begin; + +-- Modify the wt_alias domain to include explicit casts in its constraints +alter domain wt_alias drop constraint if exists wt_alias_too_short; +alter domain wt_alias drop constraint if exists wt_alias_no_suround_spaces; + +alter domain wt_alias add constraint wt_alias_too_short + check (length(trim(both from value::text)) > 0); +alter domain wt_alias add constraint wt_alias_no_suround_spaces + check (trim(both from value::text) = value::text); + +-- Modify the wt_target_alias domain to include explicit casts in its constraints +alter domain wt_target_alias drop constraint if exists wt_target_alias_too_long; + +alter domain wt_target_alias add constraint wt_target_alias_too_long + check (length(trim(both from value::text)) < 254); + +commit; \ No newline at end of file