Skip to content

Cross-tests with CodoMetis.ValueRanges on both lines: range and multirange columns as temporal-constraint periods and exclusion-constraint operands #42

Open

Description

@CaffeinatedCoder

Updated 2026-10-19 for the spin-off (#37): the two lines are EFCore.ComplexIndexes 5.x on release/5.x and SchemaKit 11.x on main.

The contract between the two libraries is the store type name. The PostgreSQL differ accepts a period whose store type ends in range, or whose CLR type is NpgsqlRange<T>. Every ValueRanges mapping carries that name (daterange, datemultirange, the custom timerange, …). Neither package references the other, and that stays so. The connection is proven by tests on both sides.

Here, with a test-only reference to the four ValueRanges packages:

On release/5.x, against ValueRanges 10.x:

  • HasTemporalConstraint(period: b => b.Period) over a DateRange, a RangeSet<DateRange, DateOnly> (multirange) and a TimeRange property passes validation, renders UNIQUE (… WITHOUT OVERLAPS), and the overlap is rejected on PostgreSQL 18.
  • HasExclusionConstraint with && over the same properties renders and rejects the overlap, on PostgreSQL 16 and 18.
  • A GiST HasComplexIndex over a range column serves a && query.

On main, against ValueRanges 11.0.0-preview.N:

Docs: docs/postgresql-constraints.md names the ValueRanges types as valid periods.

The 11 half needs ValueRanges 11.0.0-preview.1 on nuget.org (CaffeinatedCoder/CodoMetis.ValueRanges#332) and SchemaKit's own preview (#38).

ValueRanges carries the mirror tests: ComplexIndexesCrossTests and a joint smoke consumer on its 10 line, re-enabled against SchemaKit on its 11 line by CaffeinatedCoder/CodoMetis.ValueRanges#333.

Activity

  1. added this to the 11.0.0 milestone on Oct 18, 2026
  2. added
    testsAdds or changes tests only (harnesses, parity suites); no library code
    package/postgresqlAffects EFCore.ComplexIndexes.PostgreSQL
    area/constraintsTemporal (WITHOUT OVERLAPS, PERIOD) and exclusion constraints
    on Oct 18, 2026
  3. changed the title [-]Cross-tests with CodoMetis.ValueRanges: its range and multirange columns as temporal-constraint periods and exclusion-constraint operands[/-] [+]Cross-tests with CodoMetis.ValueRanges on both lines: range and multirange columns as temporal-constraint periods and exclusion-constraint operands[/+] on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/constraintsTemporal (WITHOUT OVERLAPS, PERIOD) and exclusion constraintspackage/postgresqlAffects EFCore.ComplexIndexes.PostgreSQLtestsAdds or changes tests only (harnesses, parity suites); no library code

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions