From 73bcfbcc7414a2348185adffc1a39594b68a15a4 Mon Sep 17 00:00:00 2001 From: Alexander Akhmetov Date: Thu, 11 Dec 2025 16:05:13 +0100 Subject: [PATCH] Alerting: Collate alert_rule.namespace_uid column as binary (#115152) Alerting: Collate namespace_uid column as binary --- pkg/services/sqlstore/migrations/migrations.go | 2 ++ .../ualert/alert_rule_namespace_collation.go | 10 ++++++++++ 2 files changed, 12 insertions(+) create mode 100644 pkg/services/sqlstore/migrations/ualert/alert_rule_namespace_collation.go diff --git a/pkg/services/sqlstore/migrations/migrations.go b/pkg/services/sqlstore/migrations/migrations.go index e713525c0f6..9f0191dc9ff 100644 --- a/pkg/services/sqlstore/migrations/migrations.go +++ b/pkg/services/sqlstore/migrations/migrations.go @@ -165,5 +165,7 @@ func (oss *OSSMigrations) AddMigration(mg *Migrator) { ualert.AddStateAnnotationsColumn(mg) + ualert.CollateBinAlertRuleNamespace(mg) + ualert.CollateBinAlertRuleGroup(mg) } diff --git a/pkg/services/sqlstore/migrations/ualert/alert_rule_namespace_collation.go b/pkg/services/sqlstore/migrations/ualert/alert_rule_namespace_collation.go new file mode 100644 index 00000000000..2766f337baa --- /dev/null +++ b/pkg/services/sqlstore/migrations/ualert/alert_rule_namespace_collation.go @@ -0,0 +1,10 @@ +package ualert + +import "github.com/grafana/grafana/pkg/services/sqlstore/migrator" + +// CollateBinAlertRuleNamespace ensures that namespace_uid column collates in the same way go sorts strings. +func CollateBinAlertRuleNamespace(mg *migrator.Migrator) { + mg.AddMigration("ensure namespace_uid column sorts the same way as golang", migrator.NewRawSQLMigration(""). + Mysql("ALTER TABLE alert_rule MODIFY namespace_uid VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;"). + Postgres(`ALTER TABLE alert_rule ALTER COLUMN namespace_uid SET DATA TYPE varchar(40) COLLATE "C";`)) +}