From 14b13b8239b6cad330d6627dff32705f48eb0bee Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 1 Mar 2026 03:05:34 +0100 Subject: [PATCH] fix: migration 138 use string-concat EXECUTE, no nested dollar-quoting --- ...8_customers_economic_unique_constraint.sql | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/migrations/138_customers_economic_unique_constraint.sql b/migrations/138_customers_economic_unique_constraint.sql index 3684753..3c9ce53 100644 --- a/migrations/138_customers_economic_unique_constraint.sql +++ b/migrations/138_customers_economic_unique_constraint.sql @@ -2,6 +2,7 @@ -- Prevents ambiguous mapping during e-conomic sync -- Normalize values before uniqueness check (only for text-like columns) +-- Uses string-concatenated EXECUTE to avoid nested dollar-quoting issues DO $$ DECLARE column_data_type TEXT; @@ -13,19 +14,16 @@ BEGIN AND table_name = 'customers' AND column_name = 'economic_customer_number'; + -- Only normalize whitespace for text-type columns (integer columns are skipped) IF column_data_type IN ('character varying', 'character', 'text') THEN - EXECUTE $sql$ - UPDATE customers - SET economic_customer_number = NULL - WHERE economic_customer_number IS NOT NULL - AND btrim(economic_customer_number::text) = '' - $sql$; + EXECUTE 'UPDATE customers' + || ' SET economic_customer_number = NULL' + || ' WHERE economic_customer_number IS NOT NULL' + || ' AND btrim(economic_customer_number) = '''''; - EXECUTE $sql$ - UPDATE customers - SET economic_customer_number = btrim(economic_customer_number::text) - WHERE economic_customer_number IS NOT NULL - $sql$; + EXECUTE 'UPDATE customers' + || ' SET economic_customer_number = btrim(economic_customer_number)' + || ' WHERE economic_customer_number IS NOT NULL'; END IF; END $$;