diff --git a/GitReleaseManager.yaml b/GitReleaseManager.yaml index 5cf7b159f03..e0ef30dda16 100644 --- a/GitReleaseManager.yaml +++ b/GitReleaseManager.yaml @@ -5,6 +5,7 @@ issue-labels-include: - "t: New Feature" - "t: Improvement" - "t: Task" + - "t: Tests" issue-labels-exclude: - "r: Duplicate" - "r: External Issue" @@ -26,3 +27,6 @@ issue-labels-alias: - name: "t: Task" header: Task plural: Task + - name: "t: Tests" + header: Tests + plural: Tests diff --git a/ReleaseProcedure.txt b/ReleaseProcedure.txt index 0139bd44a5c..e85165929ce 100644 --- a/ReleaseProcedure.txt +++ b/ReleaseProcedure.txt @@ -1,44 +1,52 @@ 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 release notes). - - * Update releasenotes.txt with list of issues. See if any additions to the - list of "known breaking changes" are necessary. - - * Check/update version number in build-common/common.xml. - + that is about to happen (as these will show in the milestone). + + * Create a draft release in Github with GitReleaseManager. If you have used + the NHibernate build menu, it should be available in Tools\gitreleasemanage.x.x.x\ + (change x.x.x by its current version in tools). + By example: + +Tools\gitreleasemanager.0.7.0\tools\GitReleaseManager.exe create -o nhibernate -r nhibernate-core -m 5.1 -u username -p password + + (Adjust the -m milestone parameter above, and add "-c branchname" if + releasing another branch than master) + + * Update releasenotes.txt with the list of issues generated in the GitHub + draft release. + See if any additions to the list of "known breaking changes" are necessary. + + * Update the GitHub draft release for matching other release formalism: update + its title, change its description for listing only highlights and breaking + changes, include links to the milestone and the releasenotes of the release + tag, include links to binaries on SourceForge and NuGet. + + * Check/update version number in common.xml and NHibernate.props under + build-common folder, and in master.xml under doc\reference folder. + * Don't forget to commit the above. - - * Perform the release build including running all tests (GaRelease.bat or - ShowBuildMenu.bat). - - NOTE: If you prefer to keep your source code in a path like e.g.: - C:\Users\Something\Long\Projects\nhibernate-core - you may want to issue a command like: - subst P: C:\Users\Something\Long\Projects - And then change to P:\nhibernate-core before building. This will avoid - displaying a long user-specific path in public symbol files. - - * If no error or other issue requiring further changes occurred, tag the - current git HEAD with a tag according to version number. Don't forget to - push the tag to github. - + + * Check the CI release build. + If no error or other issue requiring further changes occurred, merge + the release PR and wait for the resulting commit CI release build. + + * Retrieve the artifacts of the CI release build. + * Upload binary and source zip files to SourceForge. Update the "latest release". * Update download link on nhibernate.info. - - * Push nuget packages including the symbol packages. The nuget packages - should already be available in the build directory, together with a batch - file to push them. - - * In GitHub, mark the milestone as released. - + + * Push nuget packages including the symbol packages. + + * In GitHub, mark the milestone as released and publish the release draft, + creating the release tag by the way. (It should match the tag in the + releasenots link of the release description.) + * Post release announcement to nhusers, nhibernate-development and as project news on SourceForge. - + * If this was a stable branch, merge it forward to master. Perhaps some changes need to be edited out in the merge, but this will reduce the - risk of some issue being left unfixed on master. \ No newline at end of file + risk of some issue being left unfixed on master. diff --git a/Tools/.gitignore b/Tools/.gitignore index d6df3138ced..0de96ce7aaa 100644 --- a/Tools/.gitignore +++ b/Tools/.gitignore @@ -2,3 +2,4 @@ nuget.exe NUnit.* vswhere.* CSharpAsyncGenerator.CommandLine.* +gitreleasemanager.* \ No newline at end of file diff --git a/Tools/packages.config b/Tools/packages.config index fcfaf0c17fc..1b83c9ff820 100644 --- a/Tools/packages.config +++ b/Tools/packages.config @@ -9,4 +9,5 @@ + diff --git a/build-common/NHibernate.props b/build-common/NHibernate.props index 0edec5583ed..27b8d163cc8 100644 --- a/build-common/NHibernate.props +++ b/build-common/NHibernate.props @@ -1,8 +1,8 @@ 5 - 0 - 3 + 1 + 0 $(VersionMajor).$(VersionMinor).$(VersionPatch) diff --git a/build-common/common.xml b/build-common/common.xml index 491e9ba17d2..04994581ffa 100644 --- a/build-common/common.xml +++ b/build-common/common.xml @@ -13,8 +13,8 @@ - - + + diff --git a/doc/reference/master.xml b/doc/reference/master.xml index 40c59c3755d..66150037aa5 100644 --- a/doc/reference/master.xml +++ b/doc/reference/master.xml @@ -38,7 +38,7 @@ NHibernate - Relational Persistence for Idiomatic .NET NHibernate Reference Documentation - 5.0 + 5.1 diff --git a/releasenotes.txt b/releasenotes.txt index fae23a92f4c..cdfa5c7a326 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -1,4 +1,169 @@ -Build 5.0.3 +Build 5.1.0 +============================= + +Release notes - NHibernate - Version 5.1.0 + +** Highlights + * NHibernate has gained two new target frameworks: .Net Core 2.0 and .Net Standard 2.0. NHibernate NuGet package + provides them, along with the .Net framework 4.6.1 build. + For these new frameworks, some additional specificities or limitations apply: + * Binary serialization is not supported - the user shall implement serialization surrogates for System.Type, + FieldInfo, PropertyInfo, MethodInfo, ConstructorInfo, Delegate, etc. + * SqlClient, Odbc, Oledb drivers are converted to ReflectionBasedDriver to avoid the extra dependencies. + * CallSessionContext uses a static AsyncLocal field to mimic the CallContext behavior. + * System transactions (transaction scopes) are untested, due to the lack of data providers supporting them. + * 114 issues were resolved in this release. + + ##### Possible Breaking Changes ##### + * Since Ingres9Dialect is now supporting sequences, the enhanced-sequence identifier generator will default to + using a sequence instead of a table. Revert to previous behavior by using its force_table_use parameter. + * Some overridable methods of the Dialect base class and of MsSql2000Dialect have been obsoleted in favor of + new methods. Dialects implementors need to override the replacing methods if they were overriding the + obsolete ones, which are: + * Dialect.GetIfNotExistsCreateConstraint(Table table, string name), replaced by + GetIfNotExistsCreateConstraint(string catalog, string schema, string table, string name). + * Dialect.GetIfNotExistsCreateConstraintEnd(Table table, string name), replaced by + GetIfNotExistsCreateConstraintEnd(string catalog, string schema, string table, string name). + * Dialect.GetIfExistsDropConstraint(Table table, string name), replaced by + GetIfExistsDropConstraint(string catalog, string schema, string table, string name). + * Dialect.GetIfExistsDropConstraintEnd(Table table, string name), replaced by + GetIfExistsDropConstraintEnd(string catalog, string schema, string table, string name). + * MsSql2000Dialect.GetSelectExistingObject(string name, Table table), replaced by + GetSelectExistingObject(string catalog, string schema, string table, string name). + +** Bug + + * #1606 NHibernate 5 precision maximum on decimal reduced vs. NHibernate 4 + * #1605 MySql batcher may attempt initiating a new batch without closing open reader first. + * #1604 MySql batcher disables db exception translation + * #1602 Preserve original snapshot mode. + * #1594 AsyncLocal leak in SystemTransactionContext + * #1587 Prevent substitute garbage collection + * #1565 For update with outer join fails with PostgreSQL + * #1562 Fix round registration + * #1559 Deep removal of Fetch result operators when Any is used + * #1556 Linq query with "Contains" on persistent collection fails + * #1551 Assert for a null reference in a flaky test. + * #1536 Avoid a null reference exception in ExpressionKeyVisitor + * #1535 Fix some HQL functions registration + * #1534 Fixed entity name retrieval for EntityProjection + * #1526 ExpressionKeyVisitor does not produce unique keys for anonymous types coming from different assemblies + * #1514 Fix exceptions serialization + * #1511 Test Unicode string. + * #1509 Add missing NHibernateLogLevel.Info in example web project + * #1507 NH-3119 - fix test not supporting optimization + * #1506 SQLite is bugged with distributed transactions: disable distributed tests + * #1505 Chaining scopes with ODBC is bugged: disabling the test. + * #1501 Fix NH-3023 test + * #1496 Fix ManyToOneType.IsModified to handle both object instance and identifier passed to the parameter “old”. + * #1491 Forgotten async generation for #1487 + * #1486 Fix IsModified so that a null equates empty components when using select-before-update. + * #1484 Fix default types + * #1478 Exception when using envers with the latest logging changes + * #1476 Fix GetQueryCache storing two different caches. + * #1468 Comparison with DateTime? produces wrong SQL + * #1463 Fix a null reference case in session context + * #1454 Fix ProxyFactory cache + * #1445 Upgrade AsyncGenerator to 0.6.2 and regenerate. + * #1442 Unable to use an entity with a `FieldInterceptor` property and a lazy loaded property + * #1436 StackOverflowException when merging an entity with a lazy property + * #1434 Replace remaining SetOptions with WithOptions + * #1385 SecondLevelCache CreateSQLQuery().UniqueResult() throws Exception Specified cast is not valid. + * #1372 NH-3982 - Simple query with Cacheable, Fetch and SingleOrDefault throws exception (regression from 3.3.0) + * #1371 NH-3898 - Configuring a property with generated="insert" turns "Property.IsUpdatable" into"false" even using update="true" in the xml mapping file. + * #1363 NH-2500 - NH 3.0 Linq provider uses query parameters from first call in subsequent calls. + * #1335 NH-3787 - Decimal truncation in Linq ternary expression + * #1330 NH-3673 - Closure variable values locked in from expressions in NHibernate LINQ provider + * #1226 NH-2534 - Join-fetching a many-to-one with property-ref results in select n+1 problem + * #1196 NH-4087 - Decimal truncation occurs after 5 digits + * #1119 NH-3084 - Class NHibernate.Loader.Loader logs SQL statement on INFO level + * #1052 NH-3976 - Inconsistent Decimal/NHibernateUtil.Currency handling causing runtime error when using Oracle.ManagedDataAccess + * #987 NH-1509 - MsSql2000Dialect does not use default schema when creating "if exists" statement + * #448 NH-1285 - Drop/Create script with default_schema/default_catalog fix(SqlServer) + +** New Feature + + * #1588 Add a generic batcher for insert/update/delete statements, usable with PostgreSQL and others + * #1545 Support to join not associated entities in Criteria (aka Entity Join) + * #1451 New StaticProxyFactoryFactory + * #1403 Add timeouts support to MultiCriteria + * #1377 Logging refactoring + * #954 NH-3807 - Support for .NET Core 2.0 + * #948 NH-3435 - Ability to select entities in Criteria projections + * #910 NH-3606 - Open a stateless session from a session + * #908 NH-3470 - Allow Linq Query to load entities as read-only + +** Improvement + + * #1600 Set MySqlClientBatchingBatcher as a default batcher for MySqlDataDriver + * #1597 Add support for single-argument truncate to dialects that do not support it natively + * #1569 Modernize test example + * #1567 Avoid Trim().Length as empty check and ToLowerInvariant() in string comparison + * #1561 NAnt refactoring + * #1558 Improved collection batch fetching + * #1557 Aggregate named queries validation exceptions. + * #1555 Catch practices: avoid losing catched exception information. + * #1552 Obsolete UnmodifiableDictionary + * #1549 Remove an override which was doing the same thing as the base + * #1548 Add a missing short circuit in query parameter expansion. + * #1547 Double query translation + * #1546 Remove a redundant argument in Linq provider ExecuteQuery. + * #1543 Various string manipulation optimizations + * #1541 Cache subclass entity aliases in Loader + * #1537 Avoid unnecessary persister lookup in Loader + * #1529 Lazy mapping schema loading + * #1521 Enable warning as error for all projects and configurations + * #1519 Reuse SchemaExport in CreateSchema/DropSchema in tests + * #1515 Make NHibernateUtil.Initialize / IsInitialized better reusable for sub-projects like Envers + * #1504 More reliable SQLite handling in tests. + * #1502 Upgrade Iesi to 4.0.3 in order to use a release assembly + * #1498 Cease throwing bare Exception + * #1494 Update to Oracle installation instructions. + * #1490 Optimize empty arrays usages + * #1483 Clean-up of TypeFactory + * #1482 Refactored DefaultEntityAliases to avoid unnecessary calculations + * #1477 Reuse the same generic EmptyMapClass instance across the project + * #1475 Document expiration constraint on UpdateTimestampsCache region. + * #1467 Reduce the number of calls to UpdateTimestampsCache + * #1466 Obsolete EqualsHelper + * #1465 Obsolete EnumerableExtensions + * #1464 Obsolete ISessionImplementor.Initialize method + * #1449 Document IsDirty potential side effects + * #1441 Normalize TargetInvocationException unwrapping + * #1417 Table counter for aliases should be stable + * #1412 Store Linq query options in a query provider instead of a queryable + * #1391 Performance regression in SessionIdLoggingContext + * #843 NH-3879 - SequenceHiLoGenerator Jumps 1 number each lo > maxLo + * #842 NH-3869 - Add a way of adding comments into LINQ queries + * #837 NH-3804 - Register CHR/CHAR, NCHAR, UNICODE, and ASCII standard functions to the dialect(s) + * #831 NH-3515 - Support for Decimal.Round, Decimal.Ceiling, Decimal.Floor and other static methods of Decimal class + * #768 NH-3921 - Support sequences in Ingres9Dialect + * #769 NH-3922 - The various timeout methods should indicate time unit + +** Task + + * #1610 Move MsSql constants from driver to dialect. + * #1608 Missing Async test for GH1594 + * #1603 Forgotten async generation of truncate test + * #1598 Upgrade IESI to 4.0.4 for having a bumped file version. + * #1589 Add framework info to example web project and enable .NET Core. + * #1574 Fix encoding in NorthwindDbCreator.cs + * #1563 Generate Async test for deep removal of fetch. + * #1527 Adjust ignore rules for not ignoring DebugHelpers folder and contents + * #1525 5.1.0 release + * #1524 Reduce breaking changes due to Ingres9 sequence support + * #1518 Upgrade to AsyncGenerator 0.8.1 + * #1512 Upgrade to NUnit 3.9 + * #1474 Upgrade AsyncGenerator to 0.7.0 + +** Tests + + * #1539 Add more tests for constants in LINQ queries + +As part of releasing 5.1.0, a missing 5.0.0 possible breaking change has been added about inequality semantic in LINQ +queries. See 5.0.0 possible breaking changes. + +Build 5.0.3 ============================= Release notes - NHibernate - Version 5.0.3 @@ -126,6 +291,9 @@ Build 5.0.0 already doing CriteriaImpl.UniqueResult. * AliasToBeanResultTransformer property/field resolution logic has changed for supporting members which names differ only by case. See NH-3693 last comments for details. + * Linq inequality implementation has been changed for supporting null, meaning that a "a != b" expression + will now be considered matching if one side is null, while previously due to SQL null semantic it was + considered non-matching. See NH-3100. * Linq extension methods marked with attribute LinqExtensionMethod will no more be evaluated in-memory prior to query execution when they do not depend on query results, but will always be translated to their corresponding SQL call. This can be changed with a parameter of the attribute.