Skip to content

Commit 534b57c

Browse files
fredericDelaportehazzik
authored andcommitted
NH-4000 - Release notes.
1 parent ef5d35b commit 534b57c

File tree

1 file changed

+260
-3
lines changed

1 file changed

+260
-3
lines changed

releasenotes.txt

Lines changed: 260 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,260 @@
1+
Build 5.0.0
2+
=============================
3+
4+
** Highlights
5+
* IO bound methods have gained an async counterpart. Not intended for parallelism, make sure to await each
6+
call before further interacting with a session and its queries.
7+
* Strongly typed DML operation (insert/update/delete) are now available as Linq extensions on queryables.
8+
* Entities collections can be queried with .AsQueryable() Linq extension without being fully loaded.
9+
* Reference documentation has been curated and completed, notably with a Linq section.
10+
http://nhibernate.info/doc/nhibernate-reference/index.html
11+
12+
** Known BREAKING CHANGES from NH4.1.1.GA to 5.0.0
13+
14+
NHibernate now targets .Net 4.6.1.
15+
16+
Remotion.Linq and Antlr3 libraries are no more merged in the NHibernate library,
17+
and must be deployed along NHibernate library. (NuGet will reference them.)
18+
19+
Classes and members which were flagged as obsolete in the NHibernate 4.x series have been dropped.
20+
Prior to upgrading, fix any obsolete warning according to its message. See NH-4075 and NH-3684 for a list.
21+
22+
##### Possible Breaking Changes #####
23+
* All members exposing some System.Data types have been changed for the corresponding System.Data.Common
24+
types. (IDbCommand => DbCommand, ...)
25+
* The Date NHibernate type will no more replace by null values below its base value (which was year 1753).
26+
Its base value is now DateTime.MinValue. Its configuration parameter is obsolete.
27+
* NHibernate type DateTimeType, which is the default for a .Net DateTime, does no longer cut fractional
28+
seconds. Use DateTimeNoMsType if you wish to have fractional seconds cut. It applies to its Local/Utc
29+
counterparts too.
30+
* LocalDateTimeType and UtcDateTimeType do no more accept being set with a value having a non-matching kind,
31+
they throw instead.
32+
* DbTimestamp will now round the retrieved value according to Dialect.TimestampResolutionInTicks.
33+
* When an object typed property is mapped to a NHibernate timestamp, setting an invalid object in the
34+
property will now throw at flush instead of replacing it with DateTime.Now.
35+
* Decimal type registration now correctly handles maximal precision. For most dialects, it is 28, matching
36+
the .Net limit. Values in mappings above maximal precision will be reduced to maximal precision.
37+
* Default cast types do no more resolve string to 255 length and decimal to its default precision/scale for
38+
the dialect. They resolve to 4000 length string and (28, 10) precision/scale decimals by default, and are
39+
trimmed down according to dialect. Those defaults can be overridden with query.default_cast_length,
40+
query.default_cast_precision and query.default_cast_scale settings.
41+
* Transaction scopes handling has undergone a major rework. See NH-4011 for full details.
42+
** More transaction promotion to distributed may occur if you use the "flush on commit" feature with
43+
transaction scopes. Explicitly flush your session instead. Ensure it does not occur by disabling
44+
transaction.use_connection_on_system_events setting.
45+
** After transaction events no more allow using the connection when they are raised from a scope
46+
completion.
47+
** Connection enlistment in an ambient transaction is now enforced by NHibernate by default.
48+
** The connection releasing is no more directly triggered by a scope completion, but by later
49+
interactions with the session.
50+
* AdoNetWithDistributedTransactionFactory has been renamed AdoNetWithSystemTransactionFactory.
51+
* Subcriteria.UniqueResult<T> for value types now return default(T) when result is null, as was
52+
already doing CriteriaImpl.UniqueResult<T>.
53+
* AliasToBeanResultTransformer property/field resolution logic has changed for supporting members
54+
which names differ only by case. See NH-3693 last comments for details.
55+
* Linq extension methods marked with attribute LinqExtensionMethod will no more be evaluated
56+
in-memory prior to query execution when they do not depend on query results, but will always be
57+
translated to their corresponding SQL call. This can be changed with a parameter of the attribute.
58+
* Linq Query methods are now native members of ISession and IStatelessSession instead of being
59+
extension methods.
60+
* Linq provider now use Remotion.Linq v2, which may break Linq provider extensions, mainly due to names
61+
changes. See https://github.com/nhibernate/nhibernate-core/pull/568 changes to test files for examples.
62+
* NHibernate Linq internals have undergone some minor changes which may break custom Linq providers due
63+
to method signature changes and additional methods to implement.
64+
* IMapping interface has an additional Dialect member. ISessionFactoryImplementor has lost it, since it
65+
gains it back through IMapping.
66+
* IDriver.ExpandQueryParameters and DriverBase.CloneParameter take an additional argument.
67+
* NullableType, its descendent (notably all PrimitiveType) and IUserType value getters and setters now
68+
take the session as an argument. This should mainly impact custom types implementors.
69+
* EmitUtil is now internal and has been cleaned of unused members.
70+
* ContraintOrderedTableKeyColumnClosure has been renamed ConstraintOrderedTableKeyColumnClosure.
71+
* enabledFilter parameter has been removed from IProjection.ToSqlString and ICriterion.ToSqlString methods.
72+
* Proxy factory and proxy cache now use TypeInfo instead of System.Type. This should be transparent for
73+
most users.
74+
* Exceptions which were based on ApplicationException are now based on Exception: HibernateException,
75+
ParserException and AssertionFailure. The logger factory which could throw a bare ApplicationException
76+
now throws an InstantiationException instead.
77+
* ThreadSafeDictionary class has been removed. Use System.Collections.Concurrent.ConcurrentDictionary
78+
instead.
79+
* Entity mode switching capability, which had never been fully implemented, is dropped.
80+
* BytecodeProviderImpl, intended for .Net Framework 1 and broken, is dropped.
81+
* Sessions concrete classes constructors have been changed. (It is not expected for them to be used
82+
directly.)
83+
* Obsolete setting interceptors.beforetransactioncompletion_ignore_exceptions is dropped.
84+
* SQL Server 2008+ dialects now use datetime2 instead of datetime for all date-time types, including
85+
timestamp. This can be reverted with sql_types.keep_datetime setting.
86+
* SQL Server 2008+ timestamp resolution is now 100ns in accordance with datetime2 capabilities, down from
87+
10ms previously. This can be reverted with sql_types.keep_datetime setting.
88+
* Oracle 9g+ dialects now use timestamp(7) for all date time types, instead of timestamp(4).
89+
* Oracle 9g+ timestamp resolution is now 100ns in accordance with timestamp(7) capabilities, down from
90+
100µs previously.
91+
* Oracle: Hbm2dll will no-more choose N- prefixed types for typing Unicode string columns by default.
92+
This can be changed with oracle.use_n_prefixed_types_for_unicode setting, which will furthermore
93+
control DbCommand parameters typing accordingly. See NH-4062.
94+
* SqlServerCe: the id generator "native" will now resolve as table-hilo instead of identity.
95+
* Firebird: timestamp resolution is now 1ms.
96+
* PostgreSQL: if Npgsql v3 or later is used, time DbParameters will be fetched as TimeSpan instead of
97+
DateTime.
98+
* DB2 & Oracle lite: decimal type registration was hardcoding precision as 19 and was using length as
99+
scale. It now uses precision and scale from mapping when specified, and disregards length.
100+
* Ingres & Sybase ASA: decimal type registration was hardcoding precision as 18 and was using length as
101+
scale. It now uses precision and scale from mapping when specified, and disregards length.
102+
* ODBC: String parameter length will no more be specified by the OdbcDriver.
103+
104+
** Sub-task
105+
* [NH-3956] - Native SQL query plan may get wrong plan
106+
* [NH-3957] - Second level query cache may yields wrong cache entry
107+
* [NH-4001] - Remove ThreadSafeDictionary
108+
109+
** Bug
110+
* [NH-926] - Identity insert fails with SQL Ce dialect and aggressive connection release mode.
111+
* [NH-1752] - NHibernate Date type converts to NULL
112+
* [NH-1904] - Protected properties and public properties cannot have the same name with different case
113+
* [NH-2029] - filter-def's use-many-to-one=false should take ON into consideration
114+
* [NH-2145] - AssertionFailure exception at ISession.Save
115+
* [NH-2176] - Consecutive TransactionScopes cannot be used in same NHibernate session
116+
* [NH-2238] - "DTC transaction prepare phase failed" when UPDATE:ing in a promoted TransactionScope
117+
* [NH-2241] - Batch Insert using stateless session when using second level cache throws exception when unable to determine transient status
118+
* [NH-2928] - Connections can only be closed after the Transaction is completed
119+
* [NH-3023] - Deadlocks may cause connection pool corruption when in a distributed transaction
120+
* [NH-3078] - TimeAsTimeSpanType issue when using Sybase Advantage Database
121+
* [NH-3100] - Problem in use if condition for nullable boolean in linq to NHibernate
122+
* [NH-3114] - Collection inside Component cannot be mapped to a different table
123+
* [NH-3227] - InvalidOperationException in AbstractBatcher when distributed transaction is aborted
124+
* [NH-3247] - Char value gets 'cached' in Where-queries
125+
* [NH-3374] - Session.Merge throws InvalidCastException when using a Lazy bytes[] property
126+
* [NH-3600] - ISession.Save returns wrong Id
127+
* [NH-3665] - FirstOrDefault() broken since 3.3.4 and 3.4.0
128+
* [NH-3693] - AliasToBeanResultTransformerFixture fails under Firebird
129+
* [NH-3755] - Proxy exception for multiple joined-subclass
130+
* [NH-3757] - Dynamic entity mapped with entity-name cannot have a component of a fixed class
131+
* [NH-3793] - Attribute entity-name on <key-many-to-one> is ignored, causing mapping exception
132+
* [NH-3845] - OfType fails with polymorphism
133+
* [NH-3850] - .Count(), .Any() and other aggregates return only first result on polymorphic queries
134+
* [NH-3885] - ThreadSafeDictionary is not threadsafe
135+
* [NH-3889] - Coalesce on entity in sub-select causes incorrect SQL
136+
* [NH-3895] - Problem with DateTime fractional seconds on ODBC for MS SQL Server
137+
* [NH-3911] - Reflection Optimizer tries to cast values to getter type in setter
138+
* [NH-3913] - Component has bag of child components. Child property mapping ignored
139+
* [NH-3931] - Invalid order of child inserts when using TPH inheritance
140+
* [NH-3946] - Linq where "is base class" doesn't get subclasses
141+
* [NH-3948] - CheckAndUpdateSessionStatus() called twice in CreateFilter method inside SessionImpl class
142+
* [NH-3950] - FutureValue fails on Linq queries defining a PostExecuteTransformer
143+
* [NH-3954] - Dynamic proxy cache may yield a wrong proxy
144+
* [NH-3955] - Unreliable Equals implementation
145+
* [NH-3961] - Invalid date parameter format with nullables and MappedAs
146+
* [NH-3966] - Missing command set dispose in batchers
147+
* [NH-3968] - Distributed transaction cannot be committed because AdoNetWithDistributedTransactionFactory tries to write data by using locked sqlConnection
148+
* [NH-3969] - Firebird: TimestampResolutionInTicks should be 1ms
149+
* [NH-3977] - Thread safety weaknesses of MapBasedSessionContext
150+
* [NH-3981] - CollectionHelper.DictionaryEquals throws
151+
* [NH-3985] - ObjectDisposedException is thrown when using a child session after having previously disposed of another child session.
152+
* [NH-3998] - SqlServer CE: "The column aliases must be unique" exception is thrown in some tests
153+
* [NH-4013] - SqlClientBatchingBatcher CloseCommands contract violated
154+
* [NH-4022] - MsSql2012Dialect: Invalid drop sequence statement
155+
* [NH-4024] - ODBC failures with time
156+
* [NH-4027] - Missing disposals of enumerators
157+
* [NH-4035] - Teardown failure should not prevent cleanup
158+
* [NH-4038] - Mapping a TimeSpan in a collection component mapping maps as a BIGINT
159+
* [NH-4046] - Default length too short for variable length types with SAP Anywhere / ASE
160+
* [NH-4077] - Possible race condition in ActionQueue.ExecuteActions
161+
* [NH-4083] - ODBC nvarchar parameter corruption
162+
* [NH-4084] - DbTimestamp cause stale update exception
163+
* [NH-4086] - TimeType may lose fractional seconds
164+
* [NH-4088] - Dialect.GetCastTypeName is buggy
165+
166+
** New Feature
167+
* [NH-1530] - Add support for XmlDocType and XDocType for Oracle
168+
* [NH-2319] - IQueryable support for persistent collections
169+
* [NH-3488] - Strongly Typed Updates and Deletes
170+
* [NH-3771] - Implement setting to enable Batch Update with Optimistic Locking control
171+
* [NH-3905] - Support async: Blocking IO leads to ThreadPool starvation and limits scalability
172+
* [NH-3934] - Add methods WhereNot(ICriterion) and AndNot(ICriterion) in QueryOver
173+
* [NH-3951] - Support .All() result operator
174+
* [NH-3996] - Postgres: add support for XmlDocType and XDocType
175+
* [NH-4009] - Allow marking a Linq extension as db only
176+
* [NH-4017] - Handle Time parameter conversion for newer Npgsql
177+
* [NH-4018] - Port AutoJoinTransaction feature
178+
* [NH-4028] - Support inconclusive tests in result comparison
179+
* [NH-4031] - Add an AsyncLocalSessionContext
180+
* [NH-4032] - Supports multiple factories with ThreadStaticSessionContext
181+
* [NH-4062] - Properly handle Oracle Unicode support dual model
182+
183+
** Task
184+
* [NH-3683] - Fix Compilation Warnings
185+
* [NH-3958] - Reference documentation: missing types
186+
* [NH-3959] - Fix documentation typos
187+
* [NH-3999] - Document effect of quoted identifier on case sensitivity
188+
* [NH-4000] - Release 5.0
189+
* [NH-4004] - Restrict tests running on SQL CE
190+
* [NH-4051] - Replace System.Linq.Dynamic with System.Linq.Dynamic.Core in tests
191+
* [NH-4057] - Fix tests for MySql
192+
* [NH-4058] - Fix Oracle managed failing tests
193+
* [NH-4063] - Fix ODBC failing tests
194+
195+
** Improvement
196+
* [NH-1851] - Mapping a TimeSpan as TimeAsTimeSpan for MySQL
197+
* [NH-2444] - Document linq provider
198+
* [NH-3094] - Linq does not support unary plus and unary minus operators
199+
* [NH-3370] - Remove warning about "NHibernate.Type.CustomType -- the custom type * is not serializable"
200+
* [NH-3386] - Linq OrderBy NewID()
201+
* [NH-3431] - Replace System.Data with System.Data.Common
202+
* [NH-3578] - Subcriteria.UniqueResult<T> for value types should return default(T), same as CriteriaImpl.UniqueResult<T> when result is null
203+
* [NH-3669] - Query should be instance method of ISession
204+
* [NH-3723] - Some tests are failing when log level set to DEBUG
205+
* [NH-3744] - Fixed spelling of ContraintOrderedTableKeyColumnClosure method
206+
* [NH-3750] - Use NuGet to refer to Remotion.Linq (unmerge ReMotion.Linq)
207+
* [NH-3877] - Target .NET 4.6.1
208+
* [NH-3900] - Upgrade to Nunit 3.x
209+
* [NH-3919] - Clean up and harmonize datetime types with regards to different dialects
210+
* [NH-3927] - Switch to SemVer version scheme
211+
* [NH-3932] - Merge() may fire unnecessary updates if collection and version mapping exists
212+
* [NH-3943] - Use NuGet to reference packages instead of local copies
213+
* [NH-3944] - Upgrade to ReLinq 2
214+
* [NH-3945] - Update to Antlr 3.5.1
215+
* [NH-3952] - Cleanup EnumerableHelper usage
216+
* [NH-3962] - Build with MSBuild Tools 2017 (15)
217+
* [NH-3963] - More explicit error on MappedAs invalid usage.
218+
* [NH-3964] - Refactor reflection patterns
219+
* [NH-3970] - TestCase base class: avoid hiding test failure on tear-down
220+
* [NH-3973] - Remove enabledFilter parameter from IProjection.ToSqlString and ICriterion.ToSqlString methods
221+
* [NH-3975] - Synchronize some features dialect support properties
222+
* [NH-3978] - Extract IDatabaseMetadata from DatabaseMetadata
223+
* [NH-3987] - Re-implement NhQueryable options
224+
* [NH-3988] - Replace ApplicationException base class with just Exception
225+
* [NH-3990] - Upgrade to VS2017 Project structure
226+
* [NH-3993] - Component Element Customizer Missing ability to map non-public parents and composite element relations
227+
* [NH-3997] - SqlServer CE: Make native generator to be TableHiLoGenerator
228+
* [NH-4003] - Refactor session constructor
229+
* [NH-4010] - Visual Studio launcher still launches 2015
230+
* [NH-4014] - Update SQLite assembly for tests
231+
* [NH-4015] - Update Npgsql driver and enable DTC for it in tests
232+
* [NH-4019] - Pass assembly into log4net functions
233+
* [NH-4020] - Use TypeBuilder.CreateTypeInfo()
234+
* [NH-4021] - Track all opened session in tests
235+
* [NH-4023] - Pass ISessionImplementor to all value setters and getters of nullable types
236+
* [NH-4026] - Update Firebird driver and use server in tests
237+
* [NH-4030] - Cleanup and xml doc of Linq Future extension
238+
* [NH-4033] - Update MySql connector used in tests
239+
* [NH-4034] - Flush all sessions participating in a transaction
240+
* [NH-4043] - Complete keyword registration needs done in dialects.
241+
* [NH-4049] - EmitUtil can be cleaned up
242+
* [NH-4050] - Use Task.Run instead of BeginInvoke in tests
243+
* [NH-4052] - Collect schema validation exceptions
244+
* [NH-4064] - Unmerge Antrl3.Runtime
245+
* [NH-4073] - Replace NHibernate.Web.Example with modern version
246+
* [NH-4076] - Do not resurrect session
247+
248+
** Remove Feature
249+
* [NH-3684] - Remove <Time>Part Extension Methods of QueryOver
250+
* [NH-3700] - Remove CodeDom BytecodeProviderImpl
251+
* [NH-3722] - Remove entity mode switching capability
252+
* [NH-4075] - Remove code obsolete in 4.x
253+
254+
** Meta Issue
255+
* [NH-4011] - Fix transaction scopes handling
256+
257+
1258
Build 4.1.1.GA
2259
=============================
3260

@@ -3062,7 +3319,7 @@ Alpha Build 0.3.0.0
30623319
- BatcherImpl and PreparerImpl were combined and code cleaned up thanks to problems found when using Ngpsql (Martijn Boland).
30633320
- ITransaction is now responsible for joining IDbCommand to IDbTransaction instead of IBatcher - if applicable.
30643321
- Modified code to help improve performance of Drivers that don't support multiple Open DataReaders on a single IDbConnection.
3065-
- Fixed bug with hbm2net and VelocityRenderer throwing Exception (Carlos Guzm�n �lvarez & Peter Smulovics).
3322+
- Fixed bug with hbm2net and VelocityRenderer throwing Exception (Carlos Guzmán Álvarez & Peter Smulovics).
30663323
- Clean up of hbm2net (Peter Smulovics).
30673324
- Modified internals of AbstractEntityPersister to help with buiding on Mono (Oliver Weichhold).
30683325
- Renamed nhibernate.build to NHibernate.build to help with building on Mono (Oliver Weichhold).
@@ -3114,10 +3371,10 @@ PreAlpha Build 0.1.0.0
31143371
- nhibernate-configuration-2.0.xsd schema was updated to .net friendly names and all cfg.xml files are now validated.
31153372
- Fixed bug with classes having dynamic-insert and dynamic-update causing IndexOutOfRangeExceptions.
31163373
- Modified length of string for CultureInfoType.
3117-
- Added Firebird fixes contributed by Carlos Guzm�n �lvarez.
3374+
- Added Firebird fixes contributed by Carlos Guzmán Álvarez.
31183375
- Changed TimestampType.Set to behaive like hibernate. Will not write a null value anymore - instead replaces it with DateTime.Now.
31193376
- Removed IVersionType interface from DecimalType.
3120-
- Add PropertyExpressions contributed by Carlos Guzm�n �lvarez.
3377+
- Add PropertyExpressions contributed by Carlos Guzmán Álvarez.
31213378
- Fixed bug with referencing joined classes properties in hql.
31223379
- Fixed IndexOutOfRangeException with NormalizedEntityPersister for versioned entities.
31233380
- Added ObjectType to TypeFactory and NHibernate.

0 commit comments

Comments
 (0)