Skip to content

Commit 2f703d0

Browse files
5.1.0 release (#1525)
* Document a 5.0 breaking change on Linq inequality. * Include GitReleaseManager in NHibernate tooling. Its chocolatey version is obsolete and unable to access current GitHub. Only its NuGet version is currently usable. (Its MyGet feed seems gone.) * Update release procedure. * Update release notes for 5.1.0
1 parent e38566d commit 2f703d0

8 files changed

+220
-38
lines changed

GitReleaseManager.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ issue-labels-include:
55
- "t: New Feature"
66
- "t: Improvement"
77
- "t: Task"
8+
- "t: Tests"
89
issue-labels-exclude:
910
- "r: Duplicate"
1011
- "r: External Issue"
@@ -26,3 +27,6 @@ issue-labels-alias:
2627
- name: "t: Task"
2728
header: Task
2829
plural: Task
30+
- name: "t: Tests"
31+
header: Tests
32+
plural: Tests

ReleaseProcedure.txt

+40-32
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,52 @@
11
These are the tasks typically needed to create an official NHibernate release.
22

3-
43
* In GitHub, make sure no open issues have milestone set to the release
5-
that is about to happen (as these will show in the release notes).
6-
7-
* Update releasenotes.txt with list of issues. See if any additions to the
8-
list of "known breaking changes" are necessary.
9-
10-
* Check/update version number in build-common/common.xml.
11-
4+
that is about to happen (as these will show in the milestone).
5+
6+
* Create a draft release in Github with GitReleaseManager. If you have used
7+
the NHibernate build menu, it should be available in Tools\gitreleasemanage.x.x.x\
8+
(change x.x.x by its current version in tools).
9+
By example:
10+
11+
Tools\gitreleasemanager.0.7.0\tools\GitReleaseManager.exe create -o nhibernate -r nhibernate-core -m 5.1 -u username -p password
12+
13+
(Adjust the -m milestone parameter above, and add "-c branchname" if
14+
releasing another branch than master)
15+
16+
* Update releasenotes.txt with the list of issues generated in the GitHub
17+
draft release.
18+
See if any additions to the list of "known breaking changes" are necessary.
19+
20+
* Update the GitHub draft release for matching other release formalism: update
21+
its title, change its description for listing only highlights and breaking
22+
changes, include links to the milestone and the releasenotes of the release
23+
tag, include links to binaries on SourceForge and NuGet.
24+
25+
* Check/update version number in common.xml and NHibernate.props under
26+
build-common folder, and in master.xml under doc\reference folder.
27+
1228
* Don't forget to commit the above.
13-
14-
* Perform the release build including running all tests (GaRelease.bat or
15-
ShowBuildMenu.bat).
16-
17-
NOTE: If you prefer to keep your source code in a path like e.g.:
18-
C:\Users\Something\Long\Projects\nhibernate-core
19-
you may want to issue a command like:
20-
subst P: C:\Users\Something\Long\Projects
21-
And then change to P:\nhibernate-core before building. This will avoid
22-
displaying a long user-specific path in public symbol files.
23-
24-
* If no error or other issue requiring further changes occurred, tag the
25-
current git HEAD with a tag according to version number. Don't forget to
26-
push the tag to github.
27-
29+
30+
* Check the CI release build.
31+
If no error or other issue requiring further changes occurred, merge
32+
the release PR and wait for the resulting commit CI release build.
33+
34+
* Retrieve the artifacts of the CI release build.
35+
2836
* Upload binary and source zip files to SourceForge. Update the "latest
2937
release".
3038

3139
* Update download link on nhibernate.info.
32-
33-
* Push nuget packages including the symbol packages. The nuget packages
34-
should already be available in the build directory, together with a batch
35-
file to push them.
36-
37-
* In GitHub, mark the milestone as released.
38-
40+
41+
* Push nuget packages including the symbol packages.
42+
43+
* In GitHub, mark the milestone as released and publish the release draft,
44+
creating the release tag by the way. (It should match the tag in the
45+
releasenots link of the release description.)
46+
3947
* Post release announcement to nhusers, nhibernate-development and as
4048
project news on SourceForge.
41-
49+
4250
* If this was a stable branch, merge it forward to master. Perhaps some
4351
changes need to be edited out in the merge, but this will reduce the
44-
risk of some issue being left unfixed on master.
52+
risk of some issue being left unfixed on master.

Tools/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ nuget.exe
22
NUnit.*
33
vswhere.*
44
CSharpAsyncGenerator.CommandLine.*
5+
gitreleasemanager.*

Tools/packages.config

+1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
<package id="NUnit.Extension.VSProjectLoader" version="3.6.0" targetFramework="net461" />
1010
<package id="CSharpAsyncGenerator.CommandLine" version="0.8.2" targetFramework="net461" />
1111
<package id="vswhere" version="2.1.4" targetFramework="net461" />
12+
<package id="gitreleasemanager" version="0.7.0" targetFramework="net461" />
1213
</packages>

build-common/NHibernate.props

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<Project>
22
<PropertyGroup>
33
<VersionMajor Condition="'$(VersionMajor)' == ''">5</VersionMajor>
4-
<VersionMinor Condition="'$(VersionMinor)' == ''">0</VersionMinor>
5-
<VersionPatch Condition="'$(VersionPatch)' == ''">3</VersionPatch>
4+
<VersionMinor Condition="'$(VersionMinor)' == ''">1</VersionMinor>
5+
<VersionPatch Condition="'$(VersionPatch)' == ''">0</VersionPatch>
66
<VersionSuffix Condition="'$(VersionSuffix)' == ''"></VersionSuffix>
77

88
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>

build-common/common.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
<!-- This is used only for build folder -->
1515
<!-- TODO: Either remove or refactor to use NHibernate.props -->
16-
<property name="project.version" value="5.0.3" overwrite="false" />
17-
<property name="project.version.numeric" value="5.0.3" overwrite="false" />
16+
<property name="project.version" value="5.1.0" overwrite="false" />
17+
<property name="project.version.numeric" value="5.1.0" overwrite="false" />
1818

1919
<!-- properties used to connect to database for testing -->
2020
<include buildfile="nhibernate-properties.xml" />

doc/reference/master.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<bookinfo>
3939
<title>NHibernate - Relational Persistence for Idiomatic .NET</title>
4040
<subtitle>NHibernate Reference Documentation</subtitle>
41-
<releaseinfo>5.0</releaseinfo>
41+
<releaseinfo>5.1</releaseinfo>
4242
</bookinfo>
4343

4444
<toc />

releasenotes.txt

+169-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,169 @@
1-
Build 5.0.3
1+
Build 5.1.0
2+
=============================
3+
4+
Release notes - NHibernate - Version 5.1.0
5+
6+
** Highlights
7+
* NHibernate has gained two new target frameworks: .Net Core 2.0 and .Net Standard 2.0. NHibernate NuGet package
8+
provides them, along with the .Net framework 4.6.1 build.
9+
For these new frameworks, some additional specificities or limitations apply:
10+
* Binary serialization is not supported - the user shall implement serialization surrogates for System.Type,
11+
FieldInfo, PropertyInfo, MethodInfo, ConstructorInfo, Delegate, etc.
12+
* SqlClient, Odbc, Oledb drivers are converted to ReflectionBasedDriver to avoid the extra dependencies.
13+
* CallSessionContext uses a static AsyncLocal field to mimic the CallContext behavior.
14+
* System transactions (transaction scopes) are untested, due to the lack of data providers supporting them.
15+
* 114 issues were resolved in this release.
16+
17+
##### Possible Breaking Changes #####
18+
* Since Ingres9Dialect is now supporting sequences, the enhanced-sequence identifier generator will default to
19+
using a sequence instead of a table. Revert to previous behavior by using its force_table_use parameter.
20+
* Some overridable methods of the Dialect base class and of MsSql2000Dialect have been obsoleted in favor of
21+
new methods. Dialects implementors need to override the replacing methods if they were overriding the
22+
obsolete ones, which are:
23+
* Dialect.GetIfNotExistsCreateConstraint(Table table, string name), replaced by
24+
GetIfNotExistsCreateConstraint(string catalog, string schema, string table, string name).
25+
* Dialect.GetIfNotExistsCreateConstraintEnd(Table table, string name), replaced by
26+
GetIfNotExistsCreateConstraintEnd(string catalog, string schema, string table, string name).
27+
* Dialect.GetIfExistsDropConstraint(Table table, string name), replaced by
28+
GetIfExistsDropConstraint(string catalog, string schema, string table, string name).
29+
* Dialect.GetIfExistsDropConstraintEnd(Table table, string name), replaced by
30+
GetIfExistsDropConstraintEnd(string catalog, string schema, string table, string name).
31+
* MsSql2000Dialect.GetSelectExistingObject(string name, Table table), replaced by
32+
GetSelectExistingObject(string catalog, string schema, string table, string name).
33+
34+
** Bug
35+
36+
* #1606 NHibernate 5 precision maximum on decimal reduced vs. NHibernate 4
37+
* #1605 MySql batcher may attempt initiating a new batch without closing open reader first.
38+
* #1604 MySql batcher disables db exception translation
39+
* #1602 Preserve original snapshot mode.
40+
* #1594 AsyncLocal leak in SystemTransactionContext
41+
* #1587 Prevent substitute garbage collection
42+
* #1565 For update with outer join fails with PostgreSQL
43+
* #1562 Fix round registration
44+
* #1559 Deep removal of Fetch result operators when Any is used
45+
* #1556 Linq query with "Contains" on persistent collection fails
46+
* #1551 Assert for a null reference in a flaky test.
47+
* #1536 Avoid a null reference exception in ExpressionKeyVisitor
48+
* #1535 Fix some HQL functions registration
49+
* #1534 Fixed entity name retrieval for EntityProjection
50+
* #1526 ExpressionKeyVisitor does not produce unique keys for anonymous types coming from different assemblies
51+
* #1514 Fix exceptions serialization
52+
* #1511 Test Unicode string.
53+
* #1509 Add missing NHibernateLogLevel.Info in example web project
54+
* #1507 NH-3119 - fix test not supporting optimization
55+
* #1506 SQLite is bugged with distributed transactions: disable distributed tests
56+
* #1505 Chaining scopes with ODBC is bugged: disabling the test.
57+
* #1501 Fix NH-3023 test
58+
* #1496 Fix ManyToOneType.IsModified to handle both object instance and identifier passed to the parameter “old”.
59+
* #1491 Forgotten async generation for #1487
60+
* #1486 Fix IsModified so that a null equates empty components when using select-before-update.
61+
* #1484 Fix default types
62+
* #1478 Exception when using envers with the latest logging changes
63+
* #1476 Fix GetQueryCache storing two different caches.
64+
* #1468 Comparison with DateTime? produces wrong SQL
65+
* #1463 Fix a null reference case in session context
66+
* #1454 Fix ProxyFactory cache
67+
* #1445 Upgrade AsyncGenerator to 0.6.2 and regenerate.
68+
* #1442 Unable to use an entity with a `FieldInterceptor` property and a lazy loaded property
69+
* #1436 StackOverflowException when merging an entity with a lazy property
70+
* #1434 Replace remaining SetOptions with WithOptions
71+
* #1385 SecondLevelCache CreateSQLQuery().UniqueResult<int>() throws Exception Specified cast is not valid.
72+
* #1372 NH-3982 - Simple query with Cacheable, Fetch and SingleOrDefault throws exception (regression from 3.3.0)
73+
* #1371 NH-3898 - Configuring a property with generated="insert" turns "Property.IsUpdatable" into"false" even using update="true" in the xml mapping file.
74+
* #1363 NH-2500 - NH 3.0 Linq provider uses query parameters from first call in subsequent calls.
75+
* #1335 NH-3787 - Decimal truncation in Linq ternary expression
76+
* #1330 NH-3673 - Closure variable values locked in from expressions in NHibernate LINQ provider
77+
* #1226 NH-2534 - Join-fetching a many-to-one with property-ref results in select n+1 problem
78+
* #1196 NH-4087 - Decimal truncation occurs after 5 digits
79+
* #1119 NH-3084 - Class NHibernate.Loader.Loader logs SQL statement on INFO level
80+
* #1052 NH-3976 - Inconsistent Decimal/NHibernateUtil.Currency handling causing runtime error when using Oracle.ManagedDataAccess
81+
* #987 NH-1509 - MsSql2000Dialect does not use default schema when creating "if exists" statement
82+
* #448 NH-1285 - Drop/Create script with default_schema/default_catalog fix(SqlServer)
83+
84+
** New Feature
85+
86+
* #1588 Add a generic batcher for insert/update/delete statements, usable with PostgreSQL and others
87+
* #1545 Support to join not associated entities in Criteria (aka Entity Join)
88+
* #1451 New StaticProxyFactoryFactory
89+
* #1403 Add timeouts support to MultiCriteria
90+
* #1377 Logging refactoring
91+
* #954 NH-3807 - Support for .NET Core 2.0
92+
* #948 NH-3435 - Ability to select entities in Criteria projections
93+
* #910 NH-3606 - Open a stateless session from a session
94+
* #908 NH-3470 - Allow Linq Query to load entities as read-only
95+
96+
** Improvement
97+
98+
* #1600 Set MySqlClientBatchingBatcher as a default batcher for MySqlDataDriver
99+
* #1597 Add support for single-argument truncate to dialects that do not support it natively
100+
* #1569 Modernize test example
101+
* #1567 Avoid Trim().Length as empty check and ToLowerInvariant() in string comparison
102+
* #1561 NAnt refactoring
103+
* #1558 Improved collection batch fetching
104+
* #1557 Aggregate named queries validation exceptions.
105+
* #1555 Catch practices: avoid losing catched exception information.
106+
* #1552 Obsolete UnmodifiableDictionary
107+
* #1549 Remove an override which was doing the same thing as the base
108+
* #1548 Add a missing short circuit in query parameter expansion.
109+
* #1547 Double query translation
110+
* #1546 Remove a redundant argument in Linq provider ExecuteQuery.
111+
* #1543 Various string manipulation optimizations
112+
* #1541 Cache subclass entity aliases in Loader
113+
* #1537 Avoid unnecessary persister lookup in Loader
114+
* #1529 Lazy mapping schema loading
115+
* #1521 Enable warning as error for all projects and configurations
116+
* #1519 Reuse SchemaExport in CreateSchema/DropSchema in tests
117+
* #1515 Make NHibernateUtil.Initialize / IsInitialized better reusable for sub-projects like Envers
118+
* #1504 More reliable SQLite handling in tests.
119+
* #1502 Upgrade Iesi to 4.0.3 in order to use a release assembly
120+
* #1498 Cease throwing bare Exception
121+
* #1494 Update to Oracle installation instructions.
122+
* #1490 Optimize empty arrays usages
123+
* #1483 Clean-up of TypeFactory
124+
* #1482 Refactored DefaultEntityAliases to avoid unnecessary calculations
125+
* #1477 Reuse the same generic EmptyMapClass instance across the project
126+
* #1475 Document expiration constraint on UpdateTimestampsCache region.
127+
* #1467 Reduce the number of calls to UpdateTimestampsCache
128+
* #1466 Obsolete EqualsHelper
129+
* #1465 Obsolete EnumerableExtensions
130+
* #1464 Obsolete ISessionImplementor.Initialize method
131+
* #1449 Document IsDirty potential side effects
132+
* #1441 Normalize TargetInvocationException unwrapping
133+
* #1417 Table counter for aliases should be stable
134+
* #1412 Store Linq query options in a query provider instead of a queryable
135+
* #1391 Performance regression in SessionIdLoggingContext
136+
* #843 NH-3879 - SequenceHiLoGenerator Jumps 1 number each lo > maxLo
137+
* #842 NH-3869 - Add a way of adding comments into LINQ queries
138+
* #837 NH-3804 - Register CHR/CHAR, NCHAR, UNICODE, and ASCII standard functions to the dialect(s)
139+
* #831 NH-3515 - Support for Decimal.Round, Decimal.Ceiling, Decimal.Floor and other static methods of Decimal class
140+
* #768 NH-3921 - Support sequences in Ingres9Dialect
141+
* #769 NH-3922 - The various timeout methods should indicate time unit
142+
143+
** Task
144+
145+
* #1610 Move MsSql constants from driver to dialect.
146+
* #1608 Missing Async test for GH1594
147+
* #1603 Forgotten async generation of truncate test
148+
* #1598 Upgrade IESI to 4.0.4 for having a bumped file version.
149+
* #1589 Add framework info to example web project and enable .NET Core.
150+
* #1574 Fix encoding in NorthwindDbCreator.cs
151+
* #1563 Generate Async test for deep removal of fetch.
152+
* #1527 Adjust ignore rules for not ignoring DebugHelpers folder and contents
153+
* #1525 5.1.0 release
154+
* #1524 Reduce breaking changes due to Ingres9 sequence support
155+
* #1518 Upgrade to AsyncGenerator 0.8.1
156+
* #1512 Upgrade to NUnit 3.9
157+
* #1474 Upgrade AsyncGenerator to 0.7.0
158+
159+
** Tests
160+
161+
* #1539 Add more tests for constants in LINQ queries
162+
163+
As part of releasing 5.1.0, a missing 5.0.0 possible breaking change has been added about inequality semantic in LINQ
164+
queries. See 5.0.0 possible breaking changes.
165+
166+
Build 5.0.3
2167
=============================
3168

4169
Release notes - NHibernate - Version 5.0.3
@@ -126,6 +291,9 @@ Build 5.0.0
126291
already doing CriteriaImpl.UniqueResult<T>.
127292
* AliasToBeanResultTransformer property/field resolution logic has changed for supporting members
128293
which names differ only by case. See NH-3693 last comments for details.
294+
* Linq inequality implementation has been changed for supporting null, meaning that a "a != b" expression
295+
will now be considered matching if one side is null, while previously due to SQL null semantic it was
296+
considered non-matching. See NH-3100.
129297
* Linq extension methods marked with attribute LinqExtensionMethod will no more be evaluated
130298
in-memory prior to query execution when they do not depend on query results, but will always be
131299
translated to their corresponding SQL call. This can be changed with a parameter of the attribute.

0 commit comments

Comments
 (0)