Skip to content

10.x: translate value set Union, Add, Intersect and Except canonically (port of #478) #481

Closed

Description

@CaffeinatedCoder

Problem

Union, Add, Intersect and Except run as SQL for every value set family but text on main since #478 (PR #480, merged as 46c31df). On release/10.x Intersect, Except and Add still run in memory only, and a Union is still array_cat, refused under equality, Count, GroupBy, Distinct, OrderBy, set operations, IN and ExecuteUpdate for every family.

Change

Cherry-pick e5be805, 571e82c, c2946fa and 18c264f with -x into a PR against release/10.x:

  • ISetTypeDefinition.CanonicalizesInSql, the placeholders in ValueSetsMethodCallTranslator, and ValueSetSqlGuard.CanonicalExpander. The spike for Translate value set Intersect, Except, Add and a canonical Union for the non-text families with composed SQL #478 built the same code on EF Core 10 and 11, with identical SQL.
  • CanonicalSetTranslationTests, NodaCanonicalSetTranslationTests, CanonicalSetOperationParityTests (an oracle, with the seed canonical-set-keeps-any-copy.patch), CanonicalSetCompositionTests, and the NULL-operand parity extended to the four operations.
  • The docs, AGENTS.md, claims E17–E20, E35, E75 and E78–E82, and translation-support.json.
  • The changelog rows go under [10.4.0] in the root, EF Core and EF Core NodaTime changelogs, not under main's [11.0.0-preview.1].

Done when

On release/10.x, the translation and parity tests pass on the EF Core 10.0.0 floor and on CI's newest-patch leg, on PostgreSQL 16 and 18. The seed fails the parity test. translation-support.json classifies the three operations as server except on text, and the translation-support probe passes.

Release

### Added in 10.4.0. Fixed only on release/10.x, so close it by hand.

Activity

  1. added this to the 10.4.0 milestone on Oct 26, 2026
  2. added
    enhancementNew feature or request
    area/value-setsValue set families and wrapper arities
    package/efcoreAffects CodoMetis.ValueRanges.EFCore.PostgreSQL
    package/efcore-nodatimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTime
    on Oct 26, 2026
  3. added a commit that references this issue on Oct 26, 2026
  4. CaffeinatedCoder commented on Oct 26, 2026

    @CaffeinatedCoder
    OwnerAuthor

    Ported in #482, merged into release/10.x as cbdeca8. Ships in 10.4.0. Closed by hand: Closes #481 acts only on merges into main.

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/value-setsValue set families and wrapper aritiesenhancementNew feature or requestpackage/efcoreAffects CodoMetis.ValueRanges.EFCore.PostgreSQLpackage/efcore-nodatimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTime

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions