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