From 737e2c8aa07cc75d5e6f2763dc8984ac40b5df81 Mon Sep 17 00:00:00 2001 From: Roman Artiukhin Date: Sat, 12 Aug 2023 16:00:51 +0300 Subject: [PATCH 1/3] Cache Dialect in all public Configuration methods (#3399) Wrap mapping usages in StaticDialectMappingWrapper Fixes #3397 --- src/NHibernate/Cfg/Configuration.cs | 31 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 6b52f6008ba..4055114a3fd 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -246,10 +246,14 @@ private class StaticDialectMappingWrapper : IMapping { private readonly IMapping _mapping; - public StaticDialectMappingWrapper(IMapping mapping) + public StaticDialectMappingWrapper(IMapping mapping): this(mapping, mapping.Dialect) + { + } + + public StaticDialectMappingWrapper(IMapping mapping, Dialect.Dialect dialect) { _mapping = mapping; - Dialect = mapping.Dialect; + Dialect = dialect; } public IType GetIdentifierType(string className) @@ -941,11 +945,12 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) var script = new List(); + var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); foreach (var table in TableMappings) { if (table.IsPhysicalTable && IncludeAction(table.SchemaActions, SchemaAction.Export)) { - script.Add(table.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(table.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); script.AddRange(table.SqlCommentStrings(dialect, defaultCatalog, defaultSchema)); } } @@ -958,7 +963,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { foreach (var uk in table.UniqueKeyIterator) { - string constraintString = uk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema); + string constraintString = uk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema); if (constraintString != null) { script.Add(constraintString); @@ -968,7 +973,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) foreach (var index in table.IndexIterator) { - script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(index.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } if (dialect.SupportsForeignKeyConstraintInAlterTable) @@ -977,7 +982,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { if (fk.IsGenerated(dialect) && IncludeAction(fk.ReferencedTable.SchemaActions, SchemaAction.Export)) { - script.Add(fk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(fk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } } @@ -994,7 +999,7 @@ public string[] GenerateSchemaCreationScript(Dialect.Dialect dialect) { if (auxDbObj.AppliesToDialect(dialect)) { - script.Add(auxDbObj.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(auxDbObj.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } @@ -2364,6 +2369,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet var defaultSchema = GetQuotedDefaultSchema(dialect); var script = new List(50); + var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); foreach (var table in TableMappings) { if (table.IsPhysicalTable && IncludeAction(table.SchemaActions, SchemaAction.Update)) @@ -2372,11 +2378,11 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet table.Catalog ?? defaultCatalog, table.IsQuoted); if (tableInfo == null) { - script.Add(table.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(table.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } else { - string[] alterDDL = table.SqlAlterStrings(dialect, mapping, tableInfo, defaultCatalog, defaultSchema); + string[] alterDDL = table.SqlAlterStrings(dialect, staticDialectMapping, tableInfo, defaultCatalog, defaultSchema); script.AddRange(alterDDL); } @@ -2404,7 +2410,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet && (!(dialect is MySQLDialect) || tableInfo.GetIndexMetadata(fk.Name) == null)); if (create) { - script.Add(fk.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(fk.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } } @@ -2414,7 +2420,7 @@ public string[] GenerateSchemaUpdateScript(Dialect.Dialect dialect, IDatabaseMet { if (tableInfo == null || tableInfo.GetIndexMetadata(index.Name) == null) { - script.Add(index.SqlCreateString(dialect, mapping, defaultCatalog, defaultSchema)); + script.Add(index.SqlCreateString(dialect, staticDialectMapping, defaultCatalog, defaultSchema)); } } } @@ -2440,6 +2446,7 @@ public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMe { SecondPassCompile(); + var staticDialectMapping = new StaticDialectMappingWrapper(mapping, dialect); var defaultCatalog = GetQuotedDefaultCatalog(dialect); var defaultSchema = GetQuotedDefaultSchema(dialect); @@ -2466,7 +2473,7 @@ public void ValidateSchema(Dialect.Dialect dialect, IDatabaseMetadata databaseMe } else { - validationErrors.AddRange(table.ValidateColumns(dialect, mapping, tableInfo)); + validationErrors.AddRange(table.ValidateColumns(dialect, staticDialectMapping, tableInfo)); } } } From 4dac4ca42841ca600e2e70803585c1f46bbe900d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?= <12201973+fredericDelaporte@users.noreply.github.com> Date: Sun, 13 Aug 2023 16:17:00 +0200 Subject: [PATCH 2/3] Release 5.3.19 (#3405) --- build-common/NHibernate.props | 2 +- releasenotes.txt | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/build-common/NHibernate.props b/build-common/NHibernate.props index 8dc75dd47a5..6cad2a32da7 100644 --- a/build-common/NHibernate.props +++ b/build-common/NHibernate.props @@ -3,7 +3,7 @@ 5.3 - 18 + 19 diff --git a/releasenotes.txt b/releasenotes.txt index fd095e4ef4d..c7317d2b4f6 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -1,4 +1,20 @@ -Build 5.3.18 +Build 5.3.19 +============================= + +Release notes - NHibernate - Version 5.3.19 + +2 issues were resolved in this release. + +** Bug + + * #3397 GenerateSchemaCreationScript creates many identical dialect instances + +** Task + + * #3405 Release 5.3.19 + + +Build 5.3.18 ============================= Release notes - NHibernate - Version 5.3.18 From 7681611bfd86a12a7840dcdad99195ec6c5860cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?= <12201973+fredericDelaporte@users.noreply.github.com> Date: Sun, 13 Aug 2023 23:01:17 +0200 Subject: [PATCH 3/3] Release 5.4.5 (#3408) --- build-common/NHibernate.props | 2 +- releasenotes.txt | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/build-common/NHibernate.props b/build-common/NHibernate.props index 403c50e24a6..73ae769c705 100644 --- a/build-common/NHibernate.props +++ b/build-common/NHibernate.props @@ -3,7 +3,7 @@ 5.4 - 4 + 5 9.0 diff --git a/releasenotes.txt b/releasenotes.txt index 41d1fd8e987..a612526094e 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -1,4 +1,17 @@ -Build 5.4.4 +Build 5.4.5 +============================= + +Release notes - NHibernate - Version 5.4.5 + +2 issues were resolved in this release. + +** Task + + * #3408 Release 5.4.4 + * #3407 Release Merge 5.3.19 in 5.4.x + + +Build 5.4.4 ============================= Release notes - NHibernate - Version 5.4.4