From 21ed046853df5ecf9f64daa81c569a199e4f7d96 Mon Sep 17 00:00:00 2001 From: lschirmbrand Date: Thu, 11 Jun 2026 08:46:01 +0200 Subject: [PATCH 1/2] fixes #164, PostgreTransform Provider does not quote IncludeColumns for reserved names: Added the transformed columns to include string --- .../Impl/PostgreSQL/PostgreSQLTransformationProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs b/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs index e0ff80b0..73a3eb1c 100644 --- a/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs +++ b/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs @@ -83,7 +83,7 @@ public override string AddIndex(string table, Index index) if (index.IncludeColumns != null && index.IncludeColumns.Length > 0) { - includeString = $"INCLUDE ({string.Join(", ", index.IncludeColumns)})"; + includeString = $"INCLUDE ({string.Join(", ", columns)})"; } if (index.FilterItems != null && index.FilterItems.Count > 0) From d5089eb2d747dafa3675a8f1e386ea2a92d7643b Mon Sep 17 00:00:00 2001 From: JaBistDuNarrisch Date: Thu, 11 Jun 2026 09:01:16 +0200 Subject: [PATCH 2/2] 165 -> Quote included columns in postgre --- ...ansformationProvider_ReservedWordsTests.cs | 35 +++++++++++++++++++ .../PostgreSQLTransformationProvider.cs | 4 ++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_ReservedWordsTests.cs diff --git a/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_ReservedWordsTests.cs b/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_ReservedWordsTests.cs new file mode 100644 index 00000000..efa156c5 --- /dev/null +++ b/src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_ReservedWordsTests.cs @@ -0,0 +1,35 @@ +using System.Data; +using DotNetProjects.Migrator.Framework; +using Migrator.Tests.Providers.PostgreSQL.Base; +using NUnit.Framework; + +namespace Migrator.Tests.Providers.PostgreSQL; + +[TestFixture] +[Category("Postgre")] +public class PostgreSQLTransformationProvider_ReservedWordsTests : PostgreSQLTransformationProviderTestBase +{ + [Test] + public void AddIndex_IncludeColumnsWithReservedWord_Succeeds() + { + // Arrange + const string testTableName = "MyDefaultTestTable"; + const string propertyName1 = "Color1"; + const string propertyName2 = "Host"; + + Provider.AddTable(testTableName, + new Column(propertyName1, DbType.Int32, ColumnProperty.PrimaryKeyWithIdentity), + new Column(propertyName2, DbType.Int32, ColumnProperty.Unsigned) + ); + + // Act/Assert + Provider.AddIndex(testTableName, new Index + { + Name = "IX_WMS_OTO_Sta_OT_Pri_OTOPos", + Unique = false, + Clustered = false, + KeyColumns = [propertyName1], + IncludeColumns = [propertyName2] + }); + } +} diff --git a/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs b/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs index 73a3eb1c..1f55e5c3 100644 --- a/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs +++ b/src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs @@ -83,7 +83,9 @@ public override string AddIndex(string table, Index index) if (index.IncludeColumns != null && index.IncludeColumns.Length > 0) { - includeString = $"INCLUDE ({string.Join(", ", columns)})"; + var includeColumnsQuoted = index.IncludeColumns.Select(x => QuoteColumnNameIfRequired(x)).ToList(); + + includeString = $"INCLUDE ({string.Join(", ", includeColumnsQuoted)})"; } if (index.FilterItems != null && index.FilterItems.Count > 0)