Skip to content
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
3 changes: 0 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -197,13 +197,10 @@ jobs:
steps:
# No checkout here, so no global.json to read: this job only pushes the verified packages
# and any SDK of the line can do that. Bump it with global.json when the line moves.
# `dotnet-quality: preview` is there only because 11.0.x has no GA build yet for setup-dotnet to
# resolve. Drop it at .NET 11 GA, in the change that moves global.json to the GA SDK.
- name: Setup .NET
uses: actions/setup-dotnet@26b0ec14cb23fa6904739307f278c14f94c95bf1 # v5.4.0
with:
dotnet-version: 11.0.x
dotnet-quality: preview

# Publishes exactly what was verified — the packages are not rebuilt here.
- name: Download packages
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The first preview of the 11 line: the same public API as 10.0.0, on .NET 11. Not

### Breaking

- All four packages target `net11.0` and need the .NET 11 runtime, one target framework per line; the EF Core packages reference EF Core 11 and `Npgsql.EntityFrameworkCore.PostgreSQL` 11 (release candidates while .NET 11 is in preview). PostgreSQL 16 or later, as in 10.x.
- All four packages target `net11.0` and need the .NET 11 runtime, one target framework per line; the EF Core packages reference EF Core 11 and `Npgsql.EntityFrameworkCore.PostgreSQL` 11 (`11.0.0-rc.3`, which pins EF Core to rc.3, until Npgsql ships 11.0.0). PostgreSQL 16 or later, as in 10.x.
- Ranges: `RangeAgg()` and `RangeIntersectAgg()` skip a `null` range or set, as `range_agg` and `range_intersect_agg` skip a NULL row. With a `null` after another range, `RangeIntersectAgg()` returned `empty`, or threw after `(,)`, and `RangeAgg()` threw unless an input was `(,)` ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-rangeagg-and-rangeintersectagg-over-null-ranges)).
- Ranges: `RangeSet.From`, a collection expression and `RangeSet.Create` throw `ArgumentException` for a `null` range, where they built a set holding `null`, whose `IsEmpty()` was `false`. `Union` and `Except` called on a `null` range throw too ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#keep-null-out-of-a-range-set)).
- Ranges: a predicate called on a `null` range, or given a `null` range or set, returns `false`, as a query does over a NULL column. `Contains(Empty)`, `IsContainedBy((,))` and `(,).Contains(null)` returned `true`, and `Contains(T)` and a `null` set operand threw ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-predicates-over-a-null-range-or-a-null-column)).
Expand Down
2 changes: 1 addition & 1 deletion docs/efcore.md
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ Good to know:
- **Migrations and `EnsureCreated()` both create the key.** It is part of EF Core's own model, so no
extra registration is needed.

Everything in this section was run against PostgreSQL 18 with Npgsql 11.0.0-rc.2, over a `DateRange`,
Everything in this section was run against PostgreSQL 18 with Npgsql 11.0.0-rc.3, over a `DateRange`,
a `RangeSet<DateRange, DateOnly>`, a `TimeRange` and a `YearMonthRange` column for the key, and a
`DateRange` column for the foreign key.

Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"sdk": {
"version": "11.0.100-rc.2.26504.105",
"version": "11.0.100",
"rollForward": "latestFeature"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The first preview of the 11 line: the same public API as 10.0.0, on .NET 11, EF

### Breaking

- Targets `net11.0` and references `Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime` 11 (a release candidate while .NET 11 is in preview). PostgreSQL 16 or later, as in 10.x.
- Targets `net11.0` and references `Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime` 11 (`11.0.0-rc.3` until Npgsql ships 11.0.0). PostgreSQL 16 or later, as in 10.x.
- EF Core: `LowerBound()` and `UpperBound()` of a NodaTime range or multirange column, `YearMonthRange` included, are `NULL` in a query for an empty value and on an unbounded side, as in memory. So `== null` selects those rows, where it selected none on a required column, and `?? fallback` returns the fallback, where the row was missing ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-bound-comparisons-with-null-in-queries)).
- EF Core: a range, multirange or value set predicate over a NULL column is `false`, so its negation keeps the row, as EF Core does for `string` and `string[]`. `!b.Period.Overlaps(p)` dropped the NULL rows, and a projected predicate threw ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-predicates-over-a-null-range-or-a-null-column)).
- EF Core: `Contains(T)` on a range or multirange is `false` in a query when the element is NULL: a column of a missing child in an outer join, or a nullable column read with `.Value`. Its negation dropped the row, and a projection threw ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-predicates-over-a-null-range-or-a-null-column)).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The full range algebra translates from LINQ to SQL exactly as for the BCL-based
</ItemGroup>

<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" Version="11.0.0-rc.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" Version="11.0.0-rc.3" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion src/CodoMetis.ValueRanges.EFCore.PostgreSQL/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The first preview of the 11 line: the same public API as 10.0.0, on .NET 11, EF

### Breaking

- Targets `net11.0` and references EF Core 11 and `Npgsql.EntityFrameworkCore.PostgreSQL` 11 (release candidates while .NET 11 is in preview). PostgreSQL 16 or later, as in 10.x.
- Targets `net11.0` and references EF Core 11 and `Npgsql.EntityFrameworkCore.PostgreSQL` 11 (`11.0.0-rc.3`, which pins EF Core to rc.3, until Npgsql ships 11.0.0). PostgreSQL 16 or later, as in 10.x.
- EF Core: `EFCore.ComplexIndexes.PostgreSQL` 5.x stays on EF Core 10 and can't be installed beside the 11 packages. Its EF Core 11 successor, `CodoMetis.EFCore.SchemaKit.PostgreSQL`, isn't on NuGet yet ([CaffeinatedCoder/EFCore.ComplexIndexes#38](https://github.com/CaffeinatedCoder/EFCore.ComplexIndexes/issues/38)). For exclusion constraints until then, stay on 10.x or add the constraint with explicit SQL. Temporal keys are Npgsql's own on EF Core 11 ([Exclusion constraints](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/efcore.md#reject-overlapping-rows-with-an-exclusion-constraint)).
- EF Core: `LowerBound()` and `UpperBound()` in a query are `NULL` for an empty range or set and on an unbounded side, as in memory. So `== null` selects those rows, where it selected none on a required column, and `?? fallback` returns the fallback, where the row was missing ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-bound-comparisons-with-null-in-queries)).
- EF Core: a range, multirange or value set predicate over a NULL column is `false`, so its negation keeps the row, as EF Core does for `string` and `string[]`. `!b.Period.Overlaps(p)` dropped the NULL rows, and a projected predicate threw ([Migration](https://github.com/CaffeinatedCoder/CodoMetis.ValueRanges/blob/main/docs/migration.md#check-predicates-over-a-null-range-or-a-null-column)).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ v6 also maps the value set types to native PostgreSQL arrays (StringSet to text[
</ItemGroup>

<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="11.0.0-rc.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="11.0.0-rc.3" />
</ItemGroup>

</Project>
3 changes: 2 additions & 1 deletion src/CodoMetis.ValueRanges/Core/IValueSetFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ static bool ISpanParsable<TSet>.TryParse(ReadOnlySpan<char> s, IFormatProvider?
// NoInlining: ILCompiler 11 inlines this default into the instantiating thunk of the shared-generic
// interface, where the receiver is typed as the thunk's module type, so the cast of `this` fails and
// the thunk is compiled to a trap (SIGTRAP, exit 133) in a net11.0 Native AOT consumer — measured on
// 11.0.100-rc.2.26504.105 (#291, #299, #315, dotnet/runtime#136073). Every set family also overrides
// 11.0.100-rc.2.26504.105, and again on 11.0.100: the fix is in dotnet/runtime's main, and its backport
// (dotnet/runtime#136148) is not in 11.0.0 (#291, #299, #315, #532, dotnet/runtime#136073). Every set family also overrides
// IFormattable.ToString itself, which is what keeps the trap out of a compiled consumer today; the
// attribute keeps a family that forgets the override from trapping. The range default (IRangeFactory) did not trap in
// the same publish, which prints range text through it, so it is left alone.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="11.0.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="11.0.0" />
<PackageReference Include="MSTest" Version="4.5.2" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="5.9.0" />
<!-- Configuration binding is an entry point with no host: CultureEntryPointProbeTests binds every type. -->
<PackageReference Include="Microsoft.Extensions.Configuration" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="11.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="11.0.0" />
<PackageReference Include="MSTest" Version="4.5.2" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="MSTest" Version="4.5.2" />
<PackageReference Include="Testcontainers.PostgreSql" Version="4.16.0" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="MSTest" Version="4.5.2" />
<PackageReference Include="Testcontainers.PostgreSql" Version="4.16.0" />
<!--
Test-only, and only here: ComplexIndexesCrossTests proves that this package's columns work
Expand All @@ -28,7 +28,7 @@
the EF Core version the provider resolves, and the Roslyn they bring, which compiles the generated
model in-process (CompiledModelJsonTests). Test-only: the shipping package never references it.
-->
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="11.0.0-rc.3.26522.148" />
</ItemGroup>

<ItemGroup>
Expand Down Expand Up @@ -82,7 +82,7 @@
-->
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="11.0.0" />
<Compile Include="..\..\samples\Bookings\**\*.cs" Exclude="..\..\samples\Bookings\Program.cs;..\..\samples\Bookings\obj\**;..\..\samples\Bookings\bin\**"
Link="Walkthrough\%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="MSTest" Version="4.5.2" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="MSTest" Version="4.5.2" />
<!--
The design-time services `dotnet ef migrations add` builds (MigrationScaffoldTests), at the
EF Core version the provider resolves. Test-only: the shipping package never references it.
-->
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="11.0.0-rc.2.26504.105" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="11.0.0-rc.3.26522.148" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="MSTest" Version="4.5.2" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.4.0" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MSTest" Version="4.5.1" />
<PackageReference Include="MSTest" Version="4.5.2" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading
Loading