Skip to content

[9.0] Preserve row value type mappings when rewriting expressions - #3955

Merged
roji merged 2 commits into
hotfix/9.0.5from
roji-row-value-backport-9-0
Oct 14, 2026
Merged

roji merged 2 commits into
hotfix/9.0.5from
roji-row-value-backport-9-0

Conversation

@roji

@roji roji commented Oct 14, 2026

Copy link
Copy Markdown
Member

9.0 backport of #3953 (8912932).

Preserves TypeMapping when PgRowValueExpression.VisitChildren or Update rewrites children, fixing tuple projections over query-filtered navigations. Includes the seeded sync/async regression and rewrite/no-op identity unit coverage.

Only release-branch adaptations: EF 9's InitializeAsync/CreateContext test APIs, nullable-disabled test conventions, and query-filter parameter naming. No SDK or dependency configuration changes.

Validation on .NET SDK 9.0.312 and PostgreSQL 18.4:

  • All 4 PgRowValueExpressionTest cases passed.
  • All 31 query-filter and existing row-value functional cases passed.

Fixes #3933.

Backport #3953 to 9.0. Adapt the regression to EF 9 test APIs, nullable conventions, and query-filter parameter naming.

(cherry picked from commit 8912932)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 79a22b3a-d5f9-4921-ac7b-3a1b41a9adc1
The global tuple mapping could be enabled after the query-filter test pool was already created, causing test-order-dependent tuple reads to fail. Configure it on the regression data source instead.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 79a22b3a-d5f9-4921-ac7b-3a1b41a9adc1
@roji
roji merged commit e7039b6 into hotfix/9.0.5 Oct 14, 2026
10 checks passed
@roji
roji deleted the roji-row-value-backport-9-0 branch October 14, 2026 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NullReferenceException in shaper for tuple query when a query-filtered entity is reached via both a scalar and collection navigation

1 participant