Repository navigation
Release 10.2.0: date the changelogs, tag v10.2.0, close the 10.x-only issues, carry the sections to main #365
Copy link
Copy link
Closed
Labels
area/releaseVersioning, changelogs, release wiringVersioning, changelogs, release wiringchoreBuild, CI, packaging, refactoring with no behaviour changeBuild, CI, packaging, refactoring with no behaviour changepackage/coreAffects CodoMetis.ValueRangesAffects CodoMetis.ValueRangespackage/efcoreAffects CodoMetis.ValueRanges.EFCore.PostgreSQLAffects CodoMetis.ValueRanges.EFCore.PostgreSQLpackage/efcore-nodatimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimepackage/nodatimeAffects CodoMetis.ValueRanges.NodaTimeAffects CodoMetis.ValueRanges.NodaTime
Milestone
Description
Change
The release steps after every in-scope PR of #358 has merged into release/10.x, as #301 and #328 did for 10.1.0. #331 only opens the version.
- Check before the tag. All of these hold on the release commit, with every fix merged, so the fixes are checked together and not only one PR at a time:
- Every CI lane is green: PostgreSQL 16 and 18, on the EF Core floor and the newest-patch legs, and both smoke-test modes. These stay the gates.
dotnet run tools/oracles.cs seedsre-proves locally that every seed is caught (AGENTS.md, workflow step 4).NullElementTestspasses on both EF legs. The six composition sweeps that hold Contains(element) on a range or RangeSet is NULL in SQL for a NULL element: the negation drops the row EF Core keeps, and a projection into bool throws #381 and The range factories over a NULL element build a range: CreateFinite gives empty and CreateUnboundedStart/End give (,), where EF Core answers NULL #382 are onmainonly, so on this line it holds 10.x: Contains(element) on a range or RangeSet is NULL in SQL for a NULL element (port of #381) #387 and 10.x: the range factories over a NULL element build a range instead of answering NULL (port of #382) #388: the negation, theboolprojection,All, and a range factory over a NULL element consumed byContains,Overlaps,== nullandIsEmpty().The translation-support inventory (Translation-support inventory: every public query member classified as server, client-only or planned, and probed against EF Core #384, PR test: translation-support inventory — every public query member classified and probed against EF Core (#384) #386) is evaluated, and each finding is triaged.Done 2026-10-25 (evaluation on #384). It ran on EF Core 10.0.0 and 10.0.13 with the same result as onmain. Its only defect is RangeLowerBoundComparer.Compare runs as SQL in the range order: EF Core rewrites any Compare(a, b) to the natural comparison #385, which is deferred and documented (10.x: docs: name the two known differences 10.2.0 ships with — value set Union/Remove over NULL (#360) and RangeLowerBoundComparer in a query (#385) #397). The undocumented members are docs only (docs: what-runs-where omits Equals, RangeSet.Count, the indexers, Values, Parse/ToString and the NodaTime conversions (found by #384) #399, in 10.2.0: PR docs: list every public query member in what-runs-where (#399) #400 onmain, PR docs: list every public query member in what-runs-where (10.x, #399) #401 on 10.x).- No further discovery round runs before the tag. A new round needs a named mechanism or contract that no sweep covers yet; "there may be another bug" doesn't move the release (Epic: 10.2.0 #358, "Release boundary").
- Date the five changelogs. Set
## [10.2.0] — yyyy-mm-ddin all five, in the commit that gets tagged; no test or workflow checks the date. - Tag
v10.2.0(annotated, asv10.1.0) on that commit. The release workflow publishes, and thenugetenvironment approval is the maintainer's. - Close the 10.x-only issues by hand with the merge commit, since
Closes #nacts only onmain: 10.x: LowerBound() and UpperBound() in a query: == null becomes WHERE FALSE and ?? loses its COALESCE (port of #349) #354, 10.x: a predicate over a null range, RangeSet or value set is false in memory and in SQL (port of the predicate half of #350, #355 and #356) #357, 10.x: RangeIntersectAgg returns empty over a sequence holding a null range, where range_intersect_agg skips the NULL; RangeAgg throws (port of #361) #363, 10.x: docs: ordering by LowerBound() or UpperBound() puts open-ended and empty rows where PostgreSQL puts NULLs (port of #359) #364, 10.x: the empty-root rewrite casts EF Core's_ordcolumn to the range type on EF Core 10.0.2 and later (port of #319) #325, 10.x: Contains(element) on a range or RangeSet is NULL in SQL for a NULL element (port of #381) #387, 10.x: the range factories over a NULL element build a range instead of answering NULL (port of #382) #388, 10.x: docs: name the two known differences 10.2.0 ships with — value set Union/Remove over NULL (#360) and RangeLowerBoundComparer in a query (#385) #397. docs: what-runs-where omits Equals, RangeSet.Count, the indexers, Values, Parse/ToString and the NodaTime conversions (found by #384) #399 and docs: the in-memory reasons overstate what PostgreSQL lacks, and the Shift/Expand one is stale since #224 #402 are closed frommainby PR docs: list every public query member in what-runs-where (#399) #400 and PR docs: give each in-memory operation its real reason (#402) #403; check that their 10.x halves, PR docs: list every public query member in what-runs-where (10.x, #399) #401 and PR docs: give each in-memory operation its real reason (10.x, #402) #404, have merged too. Most are closed when their PR merges; this step checks that none is left open. - Carry 10.2.0 to
mainin one PR, as chore: carry the 10.1.0 release to main #330 did for 10.1.0:- the
[10.2.0]sections intomain's five changelogs, verbatim; ## Changed answers in 10.2.0intodocs/migration.md. 10.x: LowerBound() and UpperBound() in a query: == null becomes WHERE FALSE and ?? loses its COALESCE (port of #349) #354's subsection there meets the same heading under## Migration from v10.x; keep one and link it from the other;- whatever the conventions then require on
main. For 10.1.0 that wasPackageValidationBaselineVersionandmain's SECURITY.md row.
- the
Done when
v10.2.0 is on nuget.org for all four packages, GitHub's Latest release stays the highest stable version, the 10.x-only issues are closed, and main carries the 10.2.0 sections.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area/releaseVersioning, changelogs, release wiringVersioning, changelogs, release wiringchoreBuild, CI, packaging, refactoring with no behaviour changeBuild, CI, packaging, refactoring with no behaviour changepackage/coreAffects CodoMetis.ValueRangesAffects CodoMetis.ValueRangespackage/efcoreAffects CodoMetis.ValueRanges.EFCore.PostgreSQLAffects CodoMetis.ValueRanges.EFCore.PostgreSQLpackage/efcore-nodatimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimepackage/nodatimeAffects CodoMetis.ValueRanges.NodaTimeAffects CodoMetis.ValueRanges.NodaTime
Activity
CaffeinatedCoder commentedon Oct 25, 2026
Step 1, checked 2026-10-25 with every in-scope PR merged:
release/10.x(last: docs: give each in-memory operation its real reason (10.x, #402) #404 → 3e1669b). docs: what-runs-where omits Equals, RangeSet.Count, the indexers, Values, Parse/ToString and the NodaTime conversions (found by #384) #399 and docs: the in-memory reasons overstate what PostgreSQL lacks, and the Shift/Expand one is stale since #224 #402 were closed frommainby docs: list every public query member in what-runs-where (#399) #400 and docs: give each in-memory operation its real reason (#402) #403; the 10.x-only issues (10.x: LowerBound() and UpperBound() in a query: == null becomes WHERE FALSE and ?? loses its COALESCE (port of #349) #354, 10.x: a predicate over a null range, RangeSet or value set is false in memory and in SQL (port of the predicate half of #350, #355 and #356) #357, 10.x: RangeIntersectAgg returns empty over a sequence holding a null range, where range_intersect_agg skips the NULL; RangeAgg throws (port of #361) #363, 10.x: docs: ordering by LowerBound() or UpperBound() puts open-ended and empty rows where PostgreSQL puts NULLs (port of #359) #364, 10.x: the empty-root rewrite casts EF Core's_ordcolumn to the range type on EF Core 10.0.2 and later (port of #319) #325, 10.x: Contains(element) on a range or RangeSet is NULL in SQL for a NULL element (port of #381) #387, 10.x: the range factories over a NULL element build a range instead of answering NULL (port of #382) #388, 10.x: docs: name the two known differences 10.2.0 ships with — value set Union/Remove over NULL (#360) and RangeLowerBoundComparer in a query (#385) #397) are closed.dotnet run tools/oracles.cs seeds(SDK 10.0.402, PostgreSQL via Testcontainers) on a tree identical torelease/10.xinsrc/andtest/(it differs only in the order of two changelog lines): every seed is caught.NullElementTestsruns in the integration legs.Merge pull request #411 from CaffeinatedCoder/chore/365-date-10.2.0
Merge pull request #413 from CaffeinatedCoder/chore/365-carry-10.2.0