From fe1f5bc72bf95379b3542ff44e1f5880a39f7ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20=C5=A0tibran=C3=BD?= Date: Wed, 26 Mar 2025 13:06:29 +0100 Subject: [PATCH] ssosettings: Don't update primary key in sso_setting table. (#102878) Don't update primary key in sso_setting table. --- pkg/services/ssosettings/database/database.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/services/ssosettings/database/database.go b/pkg/services/ssosettings/database/database.go index 320c248a07d..6d9a97c3dc7 100644 --- a/pkg/services/ssosettings/database/database.go +++ b/pkg/services/ssosettings/database/database.go @@ -13,6 +13,7 @@ import ( ) const ( + idColumn = "id" isDeletedColumn = "is_deleted" updatedColumn = "updated" ) @@ -143,7 +144,10 @@ func (s *SSOSettingsStore) Delete(ctx context.Context, provider string) error { existing.Updated = time.Now().UTC() existing.IsDeleted = true - _, err = sess.ID(existing.ID).MustCols(updatedColumn, isDeletedColumn).Update(existing) + // We must explicitly omit ID column from updates, because some databases (e.g. Spanner) don't allow updating + // primary key. Xorm ignores autoincrement columns during updates, but since ID column here is a string, + // it's not ignored by default. + _, err = sess.ID(existing.ID).Omit(idColumn).MustCols(updatedColumn, isDeletedColumn).Update(existing) return err }) }