From 6fef6b6aa7e1398d21e1ff4ad5aa4c32fe1c6aa8 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, 17 May 2020 20:55:19 +0200 Subject: [PATCH 1/3] Release 5.3 --- build-common/NHibernate.props | 2 +- releasenotes.txt | 274 +++++++++++++++++++++++++++++++++- 2 files changed, 274 insertions(+), 2 deletions(-) diff --git a/build-common/NHibernate.props b/build-common/NHibernate.props index 38203a38b82..c9741ad121b 100644 --- a/build-common/NHibernate.props +++ b/build-common/NHibernate.props @@ -5,7 +5,7 @@ 5.3 0 - dev + $(NhVersion).$(VersionPatch) $(VersionSuffix).$(BuildNumber) diff --git a/releasenotes.txt b/releasenotes.txt index 3fc5a8b1649..14952d88fbf 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -1,4 +1,276 @@ -Build 5.2.7 +Build 5.3.0 +============================= + +Release notes - NHibernate - Version 5.3.0 + +218 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * A distributed cache may hold conflicting timestamps after upgrade for as much as twelve hours. + Consider flushing a distributed cache after upgrade to avoid any issue. Do not share a distributed + cache with applications using an earlier version of NHibernate. + * The counter id generator may generate conflicting ids for as much as twelve hours after upgrade. + * `update` and `delete` statements will now take into account any enabled filter on the entities + they update or delete, while previously they were ignoring them. (`insert` statements will also take + them into account, but previously they were failing instead of ignoring enabled filters.) + * ISession.Persist will no more trigger immediate generation of identifier. + * Bags will no more be loaded with "null" entities, they will be filtered out. + * Setting the value of an uninitialized lazy property will no more trigger loading of all the lazy + properties of the entity. + * If an uninitialized lazy property has got its value set, without any other subsequent lazy property + load on the entity, a dynamic update will occur on flush, even if the entity has dynamic updates + disabled. This update will occur even if the set value is identical to the currently persisted + property value. + * Assigning an uninitialized proxy to a `no-proxy` property will no more trigger the proxy + initialization. Moreover, reading the property afterwards will no more unwrap the assigned proxy, + but will yield it. + * A class having an explicitly implemented interface declaring a member with the same name than the + class id will have its proxies trigger a lazy load if the interface "id" is accessed. + * SQLite: in order to avoid a floating point division bug losing the fractional part, decimal are now + stored as `REAL` instead of `NUMERIC`. Both are binary floating point types, excepted that `NUMERIC` + stores integral values as `INTEGER`. This change may cause big integral decimal values to lose more + precision in SQLite. + * Custom dialects used for databases that do not support cross join will have to override + `SupportsCrossJoin` property and set it to `false`. + * `VisitorParameters.ConstantToParameterMap` may contain the same parameter for multiple constant + expressions. + * `ICache` caches yielded by the session factory will be `CacheBase` wrappers around the cache actually + provided by the cache provider, if it was not deriving from `CacheBase`. + +** Bug + + * #2425 NRE with nullable subselect value in Linq + * #2421 Chapter 26: Best Practices, error about identifier recommendations + * #2410 Second level cache failures with CoreMemoryCaches + * #2380 OData NotSupportedException MemberInit on base class member + * #2365 Add Linq parameter type detection + * #2346 Fix SQLite typing + * #2336 Intermittent null reference exception on CloseConnection + * #2324 Update IIsEntityDecider to use ExpressionsHelper.TryGetMappedType + * #2319 Upgrade AsyncGenerator to 0.18.1 + * #2299 Proper query plan caching for DML LINQ queries + * #2286 Wrong sql if used joined-subclass with filters for key columns + * #2278 IInterceptor.OnPrepareStatement results not used in insert/update commands + * #2266 Fix comment for Restrictions.IsEmpty + * #2255 Fix a flaky test + * #2245 Add sqlite.binaryguid to configuration schema + * #2244 SelectMany Linq extension does not work correctly - subsequent FetchMany fails + * #2233 Fix possible issue with async code for delayed entity inserts + * #2231 Invalid alias name used in Linq Joins + * #2222 NHibernate query plan for Linq Dml is not cached + * #2219 Fix BuildTool output path + * #2215 Fix ShowBuildMenu.sh + * #2181 Skip null entities when bag is populated + * #2164 Do not call GC.SuppressFinalize from finalizer thread + * #2158 Proper support for IN clause for composite values in Criteria + * #2147 Improve async locking + * #2144 AdoTransaction memory leak (5.2.5) + * #2137 NullReferenceException in EntityEntry.GetLoadedValue on an update of a never loaded detached entity + * #2099 "Composite Index" not working with inheritance + * #2088 Fix cacheable CreateSQLQuery throws on query with AddJoin + * #2085 Duplicated methods generated in proxies + * #2067 Wrong proxy built for base class with interfaced sub-classes + * #2064 One-to-one properties not appearing in Select() projection result set + * #2053 Dml Style Update fails with static where sql in mapping + * #2038 Fix a typo on the memcached distributed cache description in the docs + * #2029 Incorrect SQL for cast inside an aggregate (MS SQL) + * #2019 Update symbol package format and add Sourcelink + * #2000 Fixed Equals method for transformers + * #1997 Fix criteria collection ordering + * #1994 Extra Select for every "outfiltered" Element + * #1993 InvalidCastException when merging a collection with a lazy property + * #1985 DateTime.xxxx are not supported in SelectGroup + * #1965 Fix code sample in docs, section 10.4.2 + * #1956 Fix lazy property caching + * #1921 DML insert fails when a filter is enabled + * #1738 Refresh of locally removed collection item crashes with "instance was not in a valid state" + * #1480 Fix cache build for honoring mapped concurrency + * #1368 NH-3778 - Crash when performing a Linq query on a one-to-one mapped reference + * #1341 NH-3848 - Child collection fetched using left outer join with on clause or where clause restrictions on fetched collection shouldn’t be stored in second level cache. + * #1319 NH-3549 - BasicFormatter throws exceptions for certain types of data containing "signal words" + * #1312 NH-3493 - Cannot use alias between more than 1 level of nested queries + * #1310 NH-3478 - StatefulPersistenceContext.RemoveEntity KeyNotFoundException on Evict + * #1309 NH-3469 - Impossible to load one-to-one association with LINQ for composite-id + * #1274 NH-3117 - Query on one-to-one property returns incorrect results + * #1263 NH-2991 - Criteria withClause doesn't work in case of many to many collections + * #1228 NH-2648 - HQL with joins in sub-select creates wrong SQL + * #1206 NH-1761 - Criteria query inserts an extra order by expression when using JoinType.LeftOuterJoin and Projections + * #1158 NH-3492 - SqlClientBatchingBatcher incorrectly ignoring per-SessionFactory Settings properties + * #1128 NH-3210 - NHibernate Linq Provider does cross join or left outer join and not inner join (even if outer-join=false on many-to-one mapping) + * #1124 NH-3155 - Linq subquery with group is not supported + * #1125 NH-3178 - Exception when using one-to-one properties in a criteria projections + * #1117 NH-3079 - Cannot use a sql custom loader with a composite ID + * #1107 NH-2983 - Coalesce in projection doesn't work if there is more than 1 Coalesce + * #1103 NH-2926 - CriteriaQuery - Unable to sort by composite-id + * #1100 NH-2892 - The columns containing reserved words are not quoted + * #1059 NH-1001 - Select statement issued for each not-found=ignore + * #1047 NH-3865 - Swallowed ArgumentNullException with dynamic composite id + * #1015 NH-2951 - Missing alias in hql update (select) statement with joined subclasses + * #1006 NH-2714 - Properties mapped inside a group are not set when retrieving object + +** New Feature + + * #2411 Add an option to register a custom pre-transformer for a Linq query + * #2392 Add locate support for SQLite + * #2362 Add support for lt, gt, le, ge oData operators on strings + * #2349 Add support for Oracle binary floating point types + * #2347 Support fetching individual lazy properties for Criteria EntityProjection + * #2327 Add cross join support for Hql and Linq query provider + * #2313 Add overloads to ISession.Get taking both an entityName and a lockMode + * #2259 Schema auto-update should throw errors + * #2221 Support MemberInit expression in group by + * #2216 Add a driver to support Microsoft.Data.SqlClient provider + * #2209 IN clause support in hql for composite keys on databases without row value constructor support + * #2156 Support basic arithmetic operations (+, -, *, /) in QueryOver + * #2135 Support OData GroupBy/Aggregate + * #2116 Ability to replace ConfigurationManager with a custom config provider + * #2108 Multi-Tenancy: Implement tenant per Database strategy + * #2107 Port Hibernate's Aggregate functions for subqueries + * #2106 Port Hibernate's support subqueries in HQL as CASE statement alternatives + * #2100 Allow to override default types with length or precision parameters + * #2097 Add support for fetching an individual lazy property with Criteria + * #2090 Add support for caching fetched relations with Criteria + * #2080 Add ability to set custom collection type as a string in mapping by code + * #2049 Fix property-ref ignoring not-found="exception" mapping + * #1949 Port Hibernate's lazy attribute fetch groups + * #1922 Add support for fetching an individual lazy property with hql and linq provider + * #1861 Lazy loading and Eager initialization for Component + * #1376 Composite id is incorrectly expanded in SQL + * #1195 NH-4078 - LINQ fetched collections aren't cached + * #981 NH-3873 - Explicit joins on unrelated classes + * #959 NH-4048 - Support non-deterministic/db-side-only methods in Linq + * #896 NH-1432 - Expression.Sql should support aliases other than {alias} + +** Improvement + + * #2404 Allow overriding default CastFunction + * #2401 Optimize JoinWalker.WhereString method + * #2399 Optimize PersistentGenericBag.EqualsSnapshot + * #2394 Optimize PersistentGenericSet snapshot + * #2352 Improve performance of ReflectHelper.GetMethod/Definition + * #2350 Optimize LINQ batch item processing for queries with overridden result type + * #2316 Add multiple arguments support for ISQLFunction + * #2315 Add SetFlushMode for QueryOver and Linq + * #2295 Optimize filter applying logic + * #2287 Allow customizing 'alias to bean' property not found behavior + * #2284 Make persistent collection classes implement the IReadOnly* interfaces + * #2270 IQueryOver is lacking some options + * #2254 Add dev build version suffix + * #2249 Improve handling of SqlCeParameter.SqlDbType + * #2248 Remove most RemoveAsAliasesFromSql usages + * #2241 Avoid duplicating parameters in LINQ query + * #2238 Call generic query.List from Linq queries + * #2235 Configure log4net from embedded resource log4net.xml in tests + * #2232 Use SqlStringBuilder for batching Future/QueryBatch queries + * #2226 Use DateTime.UtcNow for timestamps + * #2225 Avoid unnecessary locking via MethodImplOptions.Synchronized + * #2223 Short-Circuit SessionFactoryImpl.Close() when already closed + * #2214 Allow configuring auto-join transaction globally + * #2213 Add a shortcut to reduce Transaction.Current reads + * #2211 Port SupportsRowValueConstructorSyntaxInInList values + * #2182 Upgrade AsyncGenerator to 0.17.1 + * #2166 Optimize usages of SqlString.Append + * #2163 Add virtual DefaultQueryProvider.CreateWithOptions + * #2162 Use collection types for private members + * #2161 Optimize ToArray conversions + * #2159 Unify handling of composite values in hql and Criteria + * #2153 Use generic parameters in ActionQueue + * #2139 Add ability to set fetch for mapping in mapping by code + * #2131 Create Stopwatch only if stats is enabled + * #2126 Upgrade AsyncGenerator to 0.14.0 + * #2125 Skip logger default initialization logic when logger provided by user + * #2123 Use Assert.Throws instead of try-catch in tests + * #2119 Obsolete interfaces for Loquacios configuration and use config classes directly + * #2117 Replace array concatenation with hand written append + * #2115 Statefull Session commit performance issue when nothing changed and second level cache with query cache enabled + * #2091 Obsolete StringHelper.Join + * #2084 Improve one-to-one handling in queries + * #2082 Use entities prepared by Loader in hql select projections + * #2078 Avoid unnecessary join for entity comparisons in with clause + * #2071 Support subclass mapping with EntityName based base class mapping + * #2061 Reduce cast usage for COUNT aggregate and add support for Mssql count_big + * #2058 DB2 dialect enhancements + * #2056 Optimize GetOrphans and remove wrong checks from IsNotTransientSlow + * #2041 Hql entity join fixes + * #2039 Use generic CollectingNodeVisitor in hql parser + * #2036 Reduce cast usage for aggregate functions + * #2032 Allow using ON instead of WITH in hql + * #2024 Refactor to simplify netfx retargeting + * #2022 Make CancellationToken optional for async Linq DML queries + * #2010 Add new collection operation queue mechanism + * #2009 Add support for IDictionary to IQuery.SetProperties + * #2007 Dispose session in cascade tests + * #2006 Skip Topological sorting if not required + * #2003 Avoid some cases of Type -> string -> Type conversion in Mapping By Code + * #2002 Refactor DependentAlias handling logic in JoinWalker + * #1999 Optimize DistinctRootEntityResultTransformer + * #1989 Optimize ProxyCacheEntry equality for the same instance + * #1988 Improve exception on user types lacking some interfaces + * #1984 Reduce SessionIdLoggingContext creation + * #1981 Remove AbstractLazyInitializer unused field + * #1979 Refactor sequential select + * #1977 Obsolete IDeserializationCallback from EntityKey + * #1972 Port Hibernate's EntityKey optimization + * #1968 Optimize StaticProxyFactory GetProxy and GetFieldInterceptionProxy methods + * #1955 Optimize batchable cache calls for cached queries + * #1947 Partially port Hibernate's current field interceptor mechanism + * #1946 Port Hibernate's BytecodeEnhancementMetadata + * #1944 Extend IAccessOptimizer to support getting/setting single property value + * #1943 Skip initialization of lazy properties when setting one + * #1923 Obsolete StringHelper.Replace + * #1860 LINQ "==" operator generates OR with IS NULL + * #1754 Delay entity insert on Persist until session is flushed + * #1627 Refactored session List method for Criteria + * #913 NH-3704 - Allow Setting Dynamic Component Templates From Dictionary + * #864 NH-2379 - Add support of Left Joins to Linq Provider + * #803 NH-2521 - Session.EnableFilter method should work for HQL-DML statement + * #780 NH-1200 - Exception occurs when using criteria exist queries + * #767 NH-3892 - Add ability to coalesce using a property instead of a constant + * #722 NH-1953 - Support Future for collection filters + * #476 Eliminated double Persister resolution in Loader.InstanceNotYetLoaded flow + +** Task + + * #2430 Document cache.serializer setting of CoreDistributedCache #2430 + * #2397 Update GitReleaseManager + * #2391 Use latest Firebird for AppVeyor and Travis + * #2388 Release 5.3 + * #2382 Refactor debug logging in AbstractBatcher + * #2381 Use optimized Dictionary.Remove(key, out value) in .NET Core + * #2379 Simplify swap items logic in LINQ Visitors + * #2377 Use dotnet to push packages to nuget + * #2376 Add MyGet gallery link to readme + * #2368 Replace SafetyEnumerable with OfType where applicable + * #2363 Upgrade AsyncGenerator to 0.18.2 + * #2356 Obsolete IdentitySet class + * #2354 Do not require Mono to build on not Windows + * #2353 Update Microsoft.SourceLink.GitHub to 1.0.0 + * #2351 Get rid of JoinedEnumerable and SingletonEnumerable + * #2348 Use static ReferenceComparer for reference comparisons + * #2308 Merge 5.2.7 + * #2294 Add StackExchangeRedis cache provider documentation + * #2293 Update RtMemoryCache framework dependency + * #2265 Fix code style issues + * #2251 Publish development nightly builds on nuget + * #2205 Merge 5.2.6 + * #2171 Upgrade NUnit + * #2122 Update AsyncGenerator to 0.13.3 + * #2016 Avoid recursive calls in BatchFetchQueue + * #2014 Obsolete Environment.Properties + * #1973 Investigate licenseUrl deprecation + * #1971 Add SourceLink to allow NuGet package debugging + * #1940 Allow to provide dev specific properties in NHibernate.dev.props + * #1936 Upgrade AsyncGenerator to 0.13.1 + +** Tests + + * #2384 Tests to verify NH-2329 is obsolete + * #2360 Add OData test for single property $expand + * #2089 Bidirectional list fails if session only knows about child + * #2066 Tests for proxy interface handling + * #1966 Test duplicated join on some Linq queries + +Build 5.2.7 ============================= Release notes - NHibernate - Version 5.2.7 From a7da22ce8392600d2c051061e3b1dcd50da520db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?= <12201973+fredericdelaporte@users.noreply.github.com> Date: Thu, 16 Jul 2020 22:55:43 +0200 Subject: [PATCH 2/3] Fix a forgotten reference in notes --- releasenotes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes.txt b/releasenotes.txt index 14952d88fbf..2e98244a630 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -231,7 +231,7 @@ Release notes - NHibernate - Version 5.3.0 ** Task - * #2430 Document cache.serializer setting of CoreDistributedCache #2430 + * #2430 Document cache.serializer setting of CoreDistributedCache * #2397 Update GitReleaseManager * #2391 Use latest Firebird for AppVeyor and Travis * #2388 Release 5.3 From e308676eb21f075d018992eddf541ed09c4181db 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, 19 Jul 2020 15:52:38 +0200 Subject: [PATCH 3/3] Update release notes --- releasenotes.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/releasenotes.txt b/releasenotes.txt index 2e98244a630..24c0e0a8a89 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -3,7 +3,7 @@ Release notes - NHibernate - Version 5.3.0 -218 issues were resolved in this release. +220 issues were resolved in this release. ##### Possible Breaking Changes ##### * A distributed cache may hold conflicting timestamps after upgrade for as much as twelve hours. @@ -231,6 +231,8 @@ Release notes - NHibernate - Version 5.3.0 ** Task + * #2433 Improve slightly mapping documentation + * #2432 Document the caches configuration providers * #2430 Document cache.serializer setting of CoreDistributedCache * #2397 Update GitReleaseManager * #2391 Use latest Firebird for AppVeyor and Travis