Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 5.3 #2388

Merged
merged 5 commits into from
Jul 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build-common/NHibernate.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<NhVersion Condition="'$(NhVersion)' == ''" >5.3</NhVersion>
<VersionPatch Condition="'$(VersionPatch)' == ''">0</VersionPatch>
<!-- Clear VersionSuffix for making release and set it to dev for making development builds -->
<VersionSuffix Condition="'$(VersionSuffix)' == ''">dev</VersionSuffix>
<VersionSuffix Condition="'$(VersionSuffix)' == ''"></VersionSuffix>

<VersionPrefix Condition="'$(VersionPrefix)' == ''">$(NhVersion).$(VersionPatch)</VersionPrefix>
<VersionSuffix Condition="'$(VersionSuffix)' != '' AND '$(BuildNumber)' != ''">$(VersionSuffix).$(BuildNumber)</VersionSuffix>
Expand Down
276 changes: 275 additions & 1 deletion releasenotes.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,278 @@
Build 5.2.7
Build 5.3.0
=============================

Release notes - NHibernate - Version 5.3.0

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.
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
bahusoid marked this conversation as resolved.
Show resolved Hide resolved
* #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 <key /> 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 <properties> 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<T> 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 <one-to-one> 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<string, object> 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<T> 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

* #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
* #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<T> with OfType<T> 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<T> and SingletonEnumerable<T>
* #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
Expand Down