From 5c7275e027bf3e2c7376dacb7829432d72415a84 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, 6 Nov 2022 14:26:10 +0100 Subject: [PATCH 1/4] Release 5.4.0 fix #3195 --- GitReleaseManager.yaml | 1 + ReleaseProcedure.txt | 2 +- build-common/NHibernate.props | 2 +- releasenotes.txt | 188 +++++++++++++++++++++++++++++++++- 4 files changed, 190 insertions(+), 3 deletions(-) diff --git a/GitReleaseManager.yaml b/GitReleaseManager.yaml index e0ef30dda16..41a50e6d795 100644 --- a/GitReleaseManager.yaml +++ b/GitReleaseManager.yaml @@ -13,6 +13,7 @@ issue-labels-exclude: - "r: Obsolete" - "r: Rejected" - "r: Replaced" + - "r: Reverted" - "t: Fix" issue-labels-alias: - name: "t: Bug" diff --git a/ReleaseProcedure.txt b/ReleaseProcedure.txt index bd0955b6613..305b4fac008 100644 --- a/ReleaseProcedure.txt +++ b/ReleaseProcedure.txt @@ -3,7 +3,7 @@ These are the tasks typically needed to create an official NHibernate release. * In GitHub, make sure no open issues have milestone set to the release that is about to happen (as these will show in the milestone). - * Restore local dotnet tools: `dotnet tool restore` + * From inside nhibernate-core folder, restore local dotnet tools: `dotnet tool restore` * Create a draft release in Github with GitReleaseManager. For example: diff --git a/build-common/NHibernate.props b/build-common/NHibernate.props index 529ecedfd41..5e27ab81d28 100644 --- a/build-common/NHibernate.props +++ b/build-common/NHibernate.props @@ -5,7 +5,7 @@ 5.4 0 - dev + 9.0 $(NhVersion).$(VersionPatch) diff --git a/releasenotes.txt b/releasenotes.txt index 527c4fb1978..d8fd1715266 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -1,4 +1,190 @@ -Build 5.3.14 +Build 5.4.0 +============================= + +Release notes - NHibernate - Version 5.4.0 + +** Highlights + * NHibernate has gained three new target frameworks: .Net 6, .Net Framework 4.8 and .Net Standard 2.1. NHibernate NuGet package + provides them, along with the older targets, .Net Core 2.0, .Net Framework 4.6.1 and .Net Standard 2.0. These new targets allow + some NHibernate optimizations for applications using them. The same limitations apply for .Net 6 and .Net Standard 2.1 than for + .Net Core 2.0 and .Net Standard 2.0, see NHibernate 5.1.0 release notes. + * A new batching strategy is available, minimizing the batching memory footprint. See #2959. Using it may increase CPU usage. + * 199 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * Linq and criteria queries on unmapped entities will throw instead of returning an empty result list. See #1106, #1095. + * The second level cache update timestamps cache do no more use locks. This may slightly increases the cases where stale + data may by returned by the query cache. See #2742. + * Equality and hashcode access on uninitialized persistent collections will no more trigger their loading. See #2461. + * DB2CoreDriver now uses named parameters instead of positional ones. See #2546. + +** Bug + + * #3189 Support proxies of classes with init properties + * #3188 No way of detecting if AutoFlush performed in added AutoFlushEventListener + * #3176 Cached entity always fetches lazy properties with read-write concurrency strategy + * #3156 Evaluation failure when using `Nullable` without a value in LINQ + * #3150 LINQ query dynamic component by interface hangs the application + * #3109 Fix table group join issue with subclasses + * #3104 Inner Join fails with left Outer Join when referenced in Where clause + * #3076 Nested group by results in "A recognition error occured" + * #2968 Fix QueryStatistics.ExecutionAvgTime calculation + * #2827 Fix BadImageFormatException in dynamic proxies for abstract classes and interfaces + * #2822 "A recognition error ocurred" querying by a nullable component with more than N properties + * #2758 Fix AmbiguousMatchException in ClearPool with FirebirdClient 6.6.0 and above + * #2750 Using System.Transaction with IStatelessSession doesn't always flush batches to database + * #2738 Unused Left Join in LINQ throws exception + * #2717 MappingByCode discriminator column with string type throws exception + * #2675 Fix collection lazy loading with composite keys on subclass columns + * #2672 Linq query failure with left joins + * #2619 InvalidOperationException in ProxyGenerator for class with generic non-virtual method + * #2614 Obvious bug in two HQLQueryPlan classes with distinction Set + * #2594 Wrong SQL produced by DML LINQ when using a select clause for a property referencing the outer select + * #2555 Add spaces around concat operator + * #2552 One-to-one second level cache issue + * #2548 Mark DB2Dialect as not supporting null columns in unique constraint + * #2547 Fix paging in DB2Dialect + * #2540 Unable to use external predicate in subquery + * #2534 Fix asymmetrical SqlType.Equals + * #2454 ConditionalProjection containing the correlation to outer query fails to determine projection type + * #2330 join on multiple conditions + * #2201 Fetch Join generates incorrect SQL joins for the same entity type + * #2092 Projection and join fetch in hql leads to duplicated column aliases + * #1365 NH-3288 - Stale data checking does not work for one-to-one associations + * #1349 NH-3893 - HQL parse error of a query with 'left' or 'right' function + * #1326 NH-3622 - Fetching in query causes incorrect/missing joins in subquery + * #1316 NH-3530 - memory when using default_batch_fetch_size + * #1235 NH-2785 - StaleStateExceptions discarded on optional table + * #1215 NH-2208 - Error with filters on joined-subclass as many-to-one + * #1209 NH-2049 - Error with filters on joined-subclass as one-to-one + * #1180 NH-3847 - ConditionalProjection throws "Both true and false projections must return the same types" when the types are the same + * #1106 NH-2978 - LINQ: Queries for unmapped entity types return empty result set + * #1075 NH-2239 - Wrong OrderBy in generated SQL when using ICriteria, Eager fetching and order by clauses in collection mappings + * #1072 NH-2174 - Invalid SQL is generated for OneToMany collections + * #1062 NH-1893 - Trigger-Identity with Dynamic Insert throws ORA-01036 (10g) + +** New Feature + + * #2959 Support Dynamic BatchFetchStyle + * #2744 Set which entities classes should never be cached, even indirectly + * #2737 Add more left join support + * #2645 Allow specifying the size of the query plan cache + * #2641 Avoid InvalidCastException with Oracle number high precision values + * #2551 Add support for joining a subquery in hql + * #2545 Table group joins for subclasses in Criteria + * #2486 Add Projections.Select in Criteria + * #2361 Table group joins support in hql + +** Improvement + + * #3184 Support caching queries with autodiscovered types + * #3177 Disable default caching in tests + * #3160 Allow internal entity classess/interfaces in .NET Standard 2.0 + * #3133 Automatically generate async code on pull request + * #3127 Register IType CLR types as aliases + * #3116 Simplify SqlGenerator.FromFragmentSeparator + * #3114 Exclude generated async files from Deepsource analysis + * #3106 Skip table group join processing for implicit join + * #3091 Use GitReleaseManager dotnet tool + * #3083 Update SHFB in order to build documentation without MSBuild + * #3050 Add .NET Standard 2.1 target + * #3027 Avoid allocations on lock in SyncCacheLock + * #3000 Add .NET 6 and .NET Framework 4.8 targets + * #2990 Use inner join instead of implicit join for implied entity joins + * #2957 Avoid lambda compilation as much as possible + * #2948 Avoid lambda compilation for member access expressions in LINQ + * #2947 LINQ queries triggers JIT a bit too much + * #2920 Add parameter type to ADO exception + * #2804 Projections.Conditional for CASE expressions with multiple conditions + * #2752 Change cascade style for DefaultDirtyCheckEventListener to persist to avoid flushing the session + * #2742 Remove locks from UpdateTimestampsCache + * #2723 Avoid double param type guessing and better NULL parameter handling in LINQ + * #2706 Set the rolledBack flag when disposing active transactions + * #2700 Potential improvement to AliasToBeanResultTransformer + * #2621 Regression bug with enums used as parameter for string column + * #2571 Default value for CancellationToken in IQueryBatch.GetResultAsync + * #2568 Support internal entity classes by proxy factory + * #2556 Register right function for Firebird and PostgreSQL + * #2546 Enable named parameters on DB2CoreDriver + * #2539 Skip no longer needed moving ON condition to Where clause in LINQ + * #2538 Remove no longer needed alias substitution for filtered many-to-many collection in hql + * #2518 Support Aggregate subqueries with paging on MS SQL Server + * #2510 Remove OrderByClause from query models with Contains, All and Any result operators + * #2492 Replace casting with NodeType checks in Criteria ExpressionProcessor + * #2479 When using a paged sub-query in Linq, generates incorrect SQL + * #2461 Remove persistent collections Equals/GetHashCode overrides + * #2460 Simplify single alias retrieval for SimpleProjections + * #2448 Avoid lambda compilation for constant and member access expressions in Criteria + * #1285 NH-3249 - Cannot perform HQL with "COUNT(DISTINCT Date(s.Date))" + * #1244 NH-2868 - Generate method of ForeignGenerator fails with stateless sessions + * #1095 NH-2829 - QueryOver/Criteria should throw exception when querying against unmapped class + * #871 NH-3115 - Should de-duplicate joins when using fetching with where in LINQ query + * #869 NH-2952 - Setting the SqlCheck is not supported in the ByCode mapping + * #809 NH-2799 - Provide the CancelQuery() method in IStatelessSession + * #766 NH-3813 - Eager fetch on key-many-to-one relation adds inner joins to the query + * #715 NH-1040 - property-ref on joined-subclasses should work or error + +** Task + + * #3195 Release NHibernate 5.4 + * #3161 Tell NuGet about the readme file + * #3147 Add `datetimex` keyword to SapSQLAnywhere17Dialect + * #3146 Run tests against Oracle XE 21c + * #3123 Update dependency Npgsql to v6 + * #3121 Update dependency Microsoft.NETFramework.ReferenceAssemblies to v1.0.3 + * #3119 Update actions/setup-dotnet action to v2 + * #3118 Update actions/checkout action to v3 + * #3117 Update dependency NSubstitute to v4.4.0 + * #3111 Update dependency log4net to v2.0.15 + * #3080 Replace Dependabot with Renovate + * #3063 Bump Oracle.ManagedDataAccess from 19.12.0 to 21.6.1 + * #3061 Bump Oracle.ManagedDataAccess.Core from 2.19.120 to 3.21.61 + * #3059 Bump log4net from 2.0.12 to 2.0.14 + * #3057 Run tests using .NET 4.8 + * #3017 Add deepsource.io code analysis + * #3002 Bump NUnit3TestAdapter from 4.1.0 to 4.2.1 + * #2987 Disable auto rebasing for depandabot PRs + * #2951 Run tests on .NET 6 + * #2946 Bump Microsoft.SourceLink.GitHub from 1.0.0 to 1.1.1 + * #2936 Bump System.Data.SQLite.Core from 1.0.114.3 to 1.0.115.5 + * #2911 Bump System.Data.SqlClient from 4.8.2 to 4.8.3 + * #2898 Bump FirebirdSql.Data.FirebirdClient from 6.6.0 to 8.5.2 + * #2887 Bump Oracle.ManagedDataAccess from 19.11.0 to 19.12.0 + * #2886 Bump Oracle.ManagedDataAccess.Core from 2.19.110 to 2.19.120 + * #2878 Bump System.Linq.Dynamic.Core from 1.2.10 to 1.2.12 + * #2870 Bump MySql.Data from 8.0.25 to 8.0.26 + * #2851 Cache Dialect in tests + * #2818 Bump Microsoft.Data.SqlClient from 2.1.3 to 3.0.0 + * #2800 Bump System.Data.SQLite.Core from 1.0.113.7 to 1.0.114.2 + * #2799 Bump Npgsql from 4.0.3 to 4.1.9 + * #2796 Bump System.Linq.Dynamic.Core from 1.2.9 to 1.2.10 + * #2790 Bump Microsoft.NET.Test.Sdk from 16.9.4 to 16.10.0 + * #2786 Bump Microsoft.Data.SqlClient from 2.1.2 to 2.1.3 + * #2771 Bump MySql.Data from 8.0.22 to 8.0.25 + * #2770 Bump System.Data.SQLite.Core from 1.0.109.2 to 1.0.113.7 + * #2765 Bump Microsoft.NETFramework.ReferenceAssemblies from 1.0.0 to 1.0.2 + * #2759 Enable dependabot + * #2756 Update dependencies + * #2607 Merge 5.3.5 + * #2605 Upgrade AsyncGenerator to 0.19.1 + * #2593 Merge 5.3.4 + * #2582 Remove no longer used code in QueryModelVisitor + * #2570 Update Relinq and LinFu links + * #2516 Suppress Codefactor single class per file rule for test project + * #2501 Upgrade MySql client and remove allowed failures on CI builds + +** Tests + + * #3024 Enable test accessing Component's Parent property in LINQ + * #2921 Fix test for SAP SQL Anywhere + * #2848 Add Oracle to GitHub Actions + * #2541 LINQ SELECT tests with WHERE subquery + * #2489 Improve CriteriaAssertFixture + * #2456 Test case for #1180 and improve NullableType.ToString + * #2242 Test case for NH-3972 - SQL error when selecting a column of a subclass when sibling classes have a column of the same name + + +Build 5.3.14 ============================= Release notes - NHibernate - Version 5.3.14 From 5331265a8cfa2fc4d264a18bd5042c99888aabe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?= <12201973+fredericdelaporte@users.noreply.github.com> Date: Mon, 14 Nov 2022 00:05:47 +0100 Subject: [PATCH 2/4] Update release notes --- releasenotes.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releasenotes.txt b/releasenotes.txt index d8fd1715266..204008e6a81 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -9,7 +9,7 @@ Release notes - NHibernate - Version 5.4.0 some NHibernate optimizations for applications using them. The same limitations apply for .Net 6 and .Net Standard 2.1 than for .Net Core 2.0 and .Net Standard 2.0, see NHibernate 5.1.0 release notes. * A new batching strategy is available, minimizing the batching memory footprint. See #2959. Using it may increase CPU usage. - * 199 issues were resolved in this release. + * 200 issues were resolved in this release. ##### Possible Breaking Changes ##### * Linq and criteria queries on unmapped entities will throw instead of returning an empty result list. See #1106, #1095. @@ -126,6 +126,7 @@ Release notes - NHibernate - Version 5.4.0 ** Task + * #3197 Update dependency System.Data.SqlClient to v4.8.5 * #3195 Release NHibernate 5.4 * #3161 Tell NuGet about the readme file * #3147 Add `datetimex` keyword to SapSQLAnywhere17Dialect From 70bb069d422115688671abf1dd1b3806fdd1d65a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?= <12201973+fredericdelaporte@users.noreply.github.com> Date: Mon, 14 Nov 2022 23:12:11 +0100 Subject: [PATCH 3/4] Fix wording and typos Co-authored-by: Gunnar Liljas Co-authored-by: Alex Zaytsev --- releasenotes.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/releasenotes.txt b/releasenotes.txt index 204008e6a81..882a933a4cd 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -6,15 +6,15 @@ Release notes - NHibernate - Version 5.4.0 ** Highlights * NHibernate has gained three new target frameworks: .Net 6, .Net Framework 4.8 and .Net Standard 2.1. NHibernate NuGet package provides them, along with the older targets, .Net Core 2.0, .Net Framework 4.6.1 and .Net Standard 2.0. These new targets allow - some NHibernate optimizations for applications using them. The same limitations apply for .Net 6 and .Net Standard 2.1 than for + some NHibernate optimizations for applications using them. The same limitations apply for .Net 6 and .Net Standard 2.1 as for .Net Core 2.0 and .Net Standard 2.0, see NHibernate 5.1.0 release notes. * A new batching strategy is available, minimizing the batching memory footprint. See #2959. Using it may increase CPU usage. * 200 issues were resolved in this release. ##### Possible Breaking Changes ##### * Linq and criteria queries on unmapped entities will throw instead of returning an empty result list. See #1106, #1095. - * The second level cache update timestamps cache do no more use locks. This may slightly increases the cases where stale - data may by returned by the query cache. See #2742. + * The second level cache UpdateTimestampsCache does not use locks anymore. This may slightly increase the number of cases + where stale data is returned by the query cache. See #2742. * Equality and hashcode access on uninitialized persistent collections will no more trigger their loading. See #2461. * DB2CoreDriver now uses named parameters instead of positional ones. See #2546. From 3af38730658bd2543988908cd599b92863898b2a Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Wed, 16 Nov 2022 21:10:13 +0000 Subject: [PATCH 4/4] Update releasenotes.txt --- releasenotes.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/releasenotes.txt b/releasenotes.txt index 882a933a4cd..6bc209ee7f3 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -9,7 +9,7 @@ Release notes - NHibernate - Version 5.4.0 some NHibernate optimizations for applications using them. The same limitations apply for .Net 6 and .Net Standard 2.1 as for .Net Core 2.0 and .Net Standard 2.0, see NHibernate 5.1.0 release notes. * A new batching strategy is available, minimizing the batching memory footprint. See #2959. Using it may increase CPU usage. - * 200 issues were resolved in this release. + * 201 issues were resolved in this release. ##### Possible Breaking Changes ##### * Linq and criteria queries on unmapped entities will throw instead of returning an empty result list. See #1106, #1095. @@ -20,6 +20,7 @@ Release notes - NHibernate - Version 5.4.0 ** Bug + * #3198 EntityUpdateAction increments version despite veto on update * #3189 Support proxies of classes with init properties * #3188 No way of detecting if AutoFlush performed in added AutoFlushEventListener * #3176 Cached entity always fetches lazy properties with read-write concurrency strategy