test(ports): account for first 500 Prisma engine query tests - #29924
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 📝 WalkthroughWalkthroughThis PR adds PostgreSQL integration coverage for aggregation, data types, distinct queries, filters, field references, and relation counts. It also adds fixture contracts, expected-failure records, non-ported manifests, and PostgreSQL harness client exposure. ChangesEngine integration coverage
Estimated code review effort: 5 (Critical) | ~120 minutes Merge Risk: ⚪ Minimal · up to This PR adds test coverage and accounting for the first 500 engine query cases without changing production behavior; no actionable merge-blocking risk remains beyond normal checks and review. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
@prisma/orm-extension-arktype-json
@prisma/orm-extension-middleware-cache
@prisma/orm-extension-paradedb
@prisma/orm-extension-pgvector
@prisma/orm-extension-postgis
@prisma/orm-extension-supabase
@prisma/orm-family-mongo
@prisma/orm-family-sql
@prisma/orm-framework
@prisma/orm-mongo
@prisma/orm-postgres
@prisma/orm-sqlite
@prisma/orm-target-mongo
@prisma/orm-target-postgres
@prisma/orm-target-sqlite
@prisma/orm-toolchain
commit: |
size-limit report 📦
|
There was a problem hiding this comment.
Actionable comments posted: 9
🧹 Nitpick comments (3)
test/integration/test/ports/engines/queries/filters/field_reference/postgres-list-field-reference.ts (1)
34-56: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueCollapse the duplicated membership implementation.
referencedScalarInListandreferencedListHasScalarhave identical bodies. Only the parameter order differs. One shared implementation prevents the two from drifting.♻️ Proposed refactor
+function scalarMembership(scalar: ColumnRef, list: ColumnRef, negated: boolean): AnyExpression { + const membership = BinaryExpr.eq(scalar, FunctionCallExpr.of('ANY', [list])); + return AndExpr.of([ + NullCheckExpr.isNotNull(scalar), + negated ? new NotExpr(membership) : membership, + ]); +} + export function referencedScalarInList( scalar: ColumnRef, list: ColumnRef, negated = false, ): AnyExpression { - const membership = BinaryExpr.eq(scalar, FunctionCallExpr.of('ANY', [list])); - return AndExpr.of([ - NullCheckExpr.isNotNull(scalar), - negated ? new NotExpr(membership) : membership, - ]); + return scalarMembership(scalar, list, negated); } export function referencedListHasScalar( list: ColumnRef, scalar: ColumnRef, negated = false, ): AnyExpression { - const membership = BinaryExpr.eq(scalar, FunctionCallExpr.of('ANY', [list])); - return AndExpr.of([ - NullCheckExpr.isNotNull(scalar), - negated ? new NotExpr(membership) : membership, - ]); + return scalarMembership(scalar, list, negated); }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/integration/test/ports/engines/queries/filters/field_reference/postgres-list-field-reference.ts` around lines 34 - 56, Collapse the duplicate membership logic in referencedScalarInList and referencedListHasScalar into one shared implementation, adapting only the argument order at the wrapper boundary. Preserve the existing negated behavior, null check, and expression construction for both public functions.test/integration/test/ports/engines/queries/aggregation/group_by_having/with-postgres-client.ts (1)
33-106: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winReuse the postgres harness for these two helpers.
Both local
withPostgresClientcopies repeatwithPostgresPort’s deserialization,returning, push, connect, runtime cleanup, anddatabaseIdleTimeoutMillis:30_000setup, and the only difference is that they expose the fullpostgres(...)client. Export a shared “with raw client” variant or add that client toPortContextsogroup_by_having.test.tsandhaving_filter.test.tscan rely on one implementation.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/integration/test/ports/engines/queries/aggregation/group_by_having/with-postgres-client.ts` around lines 33 - 106, Consolidate the duplicated setup in withPostgresClient with the existing withPostgresPort harness by exporting a shared raw-client variant or exposing the postgres client through PortContext. Reuse the existing deserialization, returning capability setup, contract push, connection/runtime cleanup, and 30_000-millisecond databaseIdleTimeoutMillis configuration, then update group_by_having.test.ts and having_filter.test.ts to use the shared implementation while preserving access to the full postgres client.test/integration/test/ports/engines/queries/aggregation/many_count_relation/many_count_relation.test.ts (1)
184-273: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd a deterministic order to the row sub-queries.
count_with_skip(lines 193 and 197),count_with_take(lines 163 and 167), andcount_with_distinct(line 264) select a subset of relation rows without anorderBy. PostgreSQL does not guarantee row order withoutORDER BY. The assertions pin exact ids, so these tests can fail intermittently after a plan change or a page reorganization.Other tests in this file already chain
orderByfor the same reason (lines 308, 317, 406, 600, 623). Apply the same pattern to the skip, take, and distinct sub-queries.If the upstream Prisma cases intentionally omit the ordering, keep the current form and add a short comment that records the divergence rationale.
♻️ Proposed ordering for
count_with_skip.include('comments', (comments) => - comments.combine({ rows: comments.select('id').skip(3), count: comments.count() }), + comments.combine({ + rows: comments + .select('id') + .orderBy((comment) => comment.id.asc()) + .skip(3), + count: comments.count(), + }), ) .include('categories', (categories) => categories.combine({ - rows: categories.select('id').skip(3), + rows: categories + .select('id') + .orderBy((category) => category.id.asc()) + .skip(3), count: categories.count(), }), )🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/integration/test/ports/engines/queries/aggregation/many_count_relation/many_count_relation.test.ts` around lines 184 - 273, Add deterministic orderBy clauses to the row sub-queries in count_with_skip, count_with_take, and count_with_distinct before applying skip, take, or distinct, matching the ordering pattern already used elsewhere in the file. Preserve the expected row ids while leaving count sub-queries unchanged; if matching upstream Prisma behavior requires omitting ordering, retain it and document that divergence with a brief comment.Source: Learnings
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@test/integration/test/ports/engines/failing.md`:
- Around line 11-16: Update the failure descriptions in the aggregate entries to
state that results include all rows matching the `where` filter, rather than
“all rows,” while preserving the explanation that `take`, negative `take`,
`skip`, and cursor state are dropped.
In
`@test/integration/test/ports/engines/non-ported/queries/filters/composite/none/none.md`:
- Around line 3-10: Replace the repeated phrase “required mapped fields” with
“fields required to be mapped” in all affected entries:
test/integration/test/ports/engines/non-ported/queries/filters/composite/none/none.md
lines 3-10,
test/integration/test/ports/engines/non-ported/queries/filters/composite/is_set/is_set.md
lines 3-20, and
test/integration/test/ports/engines/non-ported/queries/filters/composite/some/some.md
lines 3-10.
In
`@test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/contract.prisma`:
- Around line 1-26: Resolve the duplicated many-to-many definitions in
test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/contract.prisma
lines 1-26 by choosing one consistent shape: either remove PostCategory or
connect Post.categories and Category.posts to it. Apply the same choice in
test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/nested/contract.prisma
lines 13-47 for Post.tags/Tag.posts with PostTag and Comment.tags/Tag.comments
with CommentTag; ensure each explicit join model has matching opposite relation
fields when retained.
In
`@test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/self/contract.prisma`:
- Around line 1-15: Align both fixture schemas with the generated fixtures by
choosing one relationship representation: retain the explicit join models
UserFollow, PostTag, and CommentTag and remove the duplicate implicit
many-to-many relation fields, or remove those join models and update the
fixtures to use implicit relations. Apply the same consistent choice in
test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/self/contract.prisma
(lines 1-15) and
test/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/nested/contract.prisma
(lines 1-47), ensuring generated contract files and tests continue to seed and
access the selected models.
In
`@test/integration/test/ports/engines/queries/data_types/bigint/bigint.test.ts`:
- Around line 31-32: Update both multi-row queries in
test/integration/test/ports/engines/queries/data_types/bigint/bigint.test.ts
lines 31-32 and
test/integration/test/ports/engines/queries/data_types/bool/bool.test.ts lines
31-32 to order the TestModel.select('bInt') and corresponding boolean field
queries by the model primary key via orderBy before calling all(), preserving
the existing assertions.
In
`@test/integration/test/ports/engines/queries/data_types/through_relation/through_relation.test.ts`:
- Around line 158-175: Remove the `@ts-expect-error` from the scalar_lists fixture
in the it.fails test. Add a narrow fixture or helper type that permits omitting
unset while preserving the existing Child.create data, and use that
fixture/helper for the call so the test compiles without a suppression reserved
for intentional type-only tests.
In
`@test/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/decimal_filter.test.ts`:
- Around line 148-150: Remove or correct the duplicated negated
referencedScalarInList(scalar, list, true) assertion in the inclusion_filter
tests after checking the upstream Prisma cases for the intended operand. Apply
the same fix in
test/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/decimal_filter.test.ts:148-150,
enum_filter/enum_filter.test.ts:35-36,
float_filter/float_filter.test.ts:175-177,
int_filter/int_filter.test.ts:171-173,
string_filter/string_filter.test.ts:175-177,
bytes_filter/bytes_filter.test.ts:114-116,
datetime_filter/datetime_filter.test.ts:177-179, and
bigint_filter/bigint_filter.test.ts:175-177; each site should either use the
intended distinct case or remove the redundant assertion.
In
`@test/integration/test/ports/engines/queries/filters/field_reference/having_filter/having_filter.test.ts`:
- Around line 19-29: Update both grouped query builders in the having-filter
tests, including the equalGroups query, to add builder-supported orderBy clauses
that match the row order asserted by each corresponding toEqual expectation.
Keep the existing groupBy and having logic unchanged while making both result
arrays deterministic.
In
`@test/integration/test/ports/engines/queries/filters/filter_regression/filter_regression.test.ts`:
- Around line 53-73: Make the multi-row assertions deterministic by adding
ascending ID ordering to the Company and Location queries in
test/integration/test/ports/engines/queries/filters/filter_regression/filter_regression.test.ts
at lines 53-73, using each entity’s id before select; also add company ID
ascending ordering before select('id') at lines 102-108.
---
Nitpick comments:
In
`@test/integration/test/ports/engines/queries/aggregation/group_by_having/with-postgres-client.ts`:
- Around line 33-106: Consolidate the duplicated setup in withPostgresClient
with the existing withPostgresPort harness by exporting a shared raw-client
variant or exposing the postgres client through PortContext. Reuse the existing
deserialization, returning capability setup, contract push, connection/runtime
cleanup, and 30_000-millisecond databaseIdleTimeoutMillis configuration, then
update group_by_having.test.ts and having_filter.test.ts to use the shared
implementation while preserving access to the full postgres client.
In
`@test/integration/test/ports/engines/queries/aggregation/many_count_relation/many_count_relation.test.ts`:
- Around line 184-273: Add deterministic orderBy clauses to the row sub-queries
in count_with_skip, count_with_take, and count_with_distinct before applying
skip, take, or distinct, matching the ordering pattern already used elsewhere in
the file. Preserve the expected row ids while leaving count sub-queries
unchanged; if matching upstream Prisma behavior requires omitting ordering,
retain it and document that divergence with a brief comment.
In
`@test/integration/test/ports/engines/queries/filters/field_reference/postgres-list-field-reference.ts`:
- Around line 34-56: Collapse the duplicate membership logic in
referencedScalarInList and referencedListHasScalar into one shared
implementation, adapting only the argument order at the wrapper boundary.
Preserve the existing negated behavior, null check, and expression construction
for both public functions.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro Plus
Run ID: d35217b9-9523-42d9-80e7-e1caa57c7d86
⛔ Files ignored due to path filters (154)
projects/port-all-tests/briefs/engine-implementer.mdis excluded by!projects/**projects/port-all-tests/briefs/engine-reviewer.mdis excluded by!projects/**projects/port-all-tests/checklists/engines-queries.mdis excluded by!projects/**projects/port-all-tests/spec.mdis excluded by!projects/**test/integration/test/ports/engines/queries/aggregation/avg/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/avg/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/avg/_fixture/numeric/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/avg/_fixture/numeric/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/count/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/count/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by/_fixture/main/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by/_fixture/main/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by/_fixture/regression-21789/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by/_fixture/regression-21789/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/common/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/common/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/compound/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/compound/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/nested/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/nested/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/self/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/self/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/max/_fixture/common/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/max/_fixture/common/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/max/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/max/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/min/_fixture/common/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/min/_fixture/common/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/min/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/min/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/sum/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/sum/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/sum/_fixture/numeric/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/sum/_fixture/numeric/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/base/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/base/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/nested/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/nested/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bigint/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bigint/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bool/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bool/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bytes/_fixture/relations/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bytes/_fixture/relations/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bytes/_fixture/scalars/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/bytes/_fixture/scalars/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/datetime/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/datetime/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/decimal/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/decimal/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/enum_type/_fixture/postgres/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/enum_type/_fixture/postgres/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/float/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/float/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/int/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/int/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/json/_fixture/scalar/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/json/_fixture/scalar/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/other/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/other/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/string/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/string/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/string/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/string/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/common/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/common/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/enum/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/enum/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/json/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/json/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/lists/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/data_types/through_relation/_fixture/lists/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/distinct/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/distinct/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/bigint_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/bigint_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/bytes_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/bytes_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/decimal_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/decimal_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/decimal-list/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/decimal-list/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/enum/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/enum/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/list/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/list/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/mixed/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/_fixture/mixed/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/bigint_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/bigint_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/bytes_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/bytes_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/datetime_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/datetime_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/common/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/common/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/default/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/default/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/list/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/list/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/float_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/float_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/having_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/having_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/int_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/int_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/list/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/list/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/complex/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/complex/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-many/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-many/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one-list/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one-list/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/string_filter/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/field_reference/string_filter/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filter_regression/_fixture/compound-one-to-many/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filter_regression/_fixture/compound-one-to-many/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filter_regression/_fixture/many-to-many/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filter_regression/_fixture/many-to-many/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filter_regression/_fixture/one-to-many/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filter_regression/_fixture/one-to-many/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filters/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/filters/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/json/_fixture/optional/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/json/_fixture/optional/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/list_filters/_fixture/base/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/list_filters/_fixture/base/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/list_filters/_fixture/decimal/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/list_filters/_fixture/decimal/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/list_filters/_fixture/json/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/list_filters/_fixture/json/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/many_relation/_fixture/25103/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/many_relation/_fixture/25103/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/many_relation/_fixture/l2-to-one/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/many_relation/_fixture/l2-to-one/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/one2one_regression/_fixture/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/one2one_regression/_fixture/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/one_relation/_fixture/21356/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/one_relation/_fixture/21356/generated/contract.jsonis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/one_relation/_fixture/21366/generated/contract.d.tsis excluded by!**/generated/**test/integration/test/ports/engines/queries/filters/one_relation/_fixture/21366/generated/contract.jsonis excluded by!**/generated/**
📒 Files selected for processing (242)
test/integration/test/ports/engines/failing.mdtest/integration/test/ports/engines/non-ported/queries/aggregation/avg/avg.mdtest/integration/test/ports/engines/non-ported/queries/aggregation/combination_spec/combination_spec.mdtest/integration/test/ports/engines/non-ported/queries/aggregation/count/count.mdtest/integration/test/ports/engines/non-ported/queries/aggregation/group_by/group_by.mdtest/integration/test/ports/engines/non-ported/queries/aggregation/group_by_having/group_by_having.mdtest/integration/test/ports/engines/non-ported/queries/aggregation/many_count_relation/many_count_relation.mdtest/integration/test/ports/engines/non-ported/queries/batching/select_different_key_types/select_different_key_types.mdtest/integration/test/ports/engines/non-ported/queries/batching/select_one_compound/select_one_compound.mdtest/integration/test/ports/engines/non-ported/queries/batching/select_one_singular/select_one_singular.mdtest/integration/test/ports/engines/non-ported/queries/batching/transactional_batch/transactional_batch.mdtest/integration/test/ports/engines/non-ported/queries/chunking/chunking.mdtest/integration/test/ports/engines/non-ported/queries/chunking_qc/chunking_qc.mdtest/integration/test/ports/engines/non-ported/queries/data_types/enum_type/enum_type.mdtest/integration/test/ports/engines/non-ported/queries/data_types/json/json.mdtest/integration/test/ports/engines/non-ported/queries/data_types/native/mssql/mssql.mdtest/integration/test/ports/engines/non-ported/queries/data_types/native/mysql/mysql.mdtest/integration/test/ports/engines/non-ported/queries/data_types/native/postgres/postgres.mdtest/integration/test/ports/engines/non-ported/queries/data_types/through_relation/through_relation.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/combination/composite/composite.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/combination/to_many_relation/to_many_relation.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/combination/to_one_relation/to_one_relation.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/equals/equals.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/every/every.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/is/is.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/is_empty/is_empty.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/is_set/is_set.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/none/none.mdtest/integration/test/ports/engines/non-ported/queries/filters/composite/some/some.mdtest/integration/test/ports/engines/non-ported/queries/filters/extended_relation_filters/extended_relation_filters.mdtest/integration/test/ports/engines/non-ported/queries/filters/field_reference/composite_filter/composite_filter.mdtest/integration/test/ports/engines/non-ported/queries/filters/field_reference/failure/failure.mdtest/integration/test/ports/engines/non-ported/queries/filters/field_reference/json_filter/json_filter.mdtest/integration/test/ports/engines/non-ported/queries/filters/field_reference/relation_filter/relation_filter.mdtest/integration/test/ports/engines/non-ported/queries/filters/field_reference/string_filter/string_filter.mdtest/integration/test/ports/engines/non-ported/queries/filters/filter_unwrap/filter_unwrap.mdtest/integration/test/ports/engines/non-ported/queries/filters/filters/filters.mdtest/integration/test/ports/engines/non-ported/queries/filters/insensitive_filters/insensitive_filters.mdtest/integration/test/ports/engines/non-ported/queries/filters/insensitive_json_filters/insensitive_json_filters.mdtest/integration/test/ports/engines/non-ported/queries/filters/json/json.mdtest/integration/test/ports/engines/non-ported/queries/filters/json_filters/json_filters.mdtest/integration/test/ports/engines/non-ported/queries/filters/list_filters/list_filters.mdtest/integration/test/ports/engines/non-ported/queries/filters/many_relation/many_relation.mdtest/integration/test/ports/engines/non-ported/queries/filters/one_relation/one_relation.mdtest/integration/test/ports/engines/non-ported/queries/filters/ported_filters/ported_filters.mdtest/integration/test/ports/engines/queries/aggregation/avg/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/aggregation/avg/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/avg/_fixture/numeric/contract.prismatest/integration/test/ports/engines/queries/aggregation/avg/_fixture/numeric/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/avg/avg.test.tstest/integration/test/ports/engines/queries/aggregation/count/_fixture/contract.prismatest/integration/test/ports/engines/queries/aggregation/count/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/count/count.test.tstest/integration/test/ports/engines/queries/aggregation/group_by/_fixture/main/contract.prismatest/integration/test/ports/engines/queries/aggregation/group_by/_fixture/main/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/group_by/_fixture/regression-21789/contract.prismatest/integration/test/ports/engines/queries/aggregation/group_by/_fixture/regression-21789/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/group_by/group_by.test.tstest/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/common/contract.prismatest/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/common/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/aggregation/group_by_having/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/group_by_having/group_by_having.test.tstest/integration/test/ports/engines/queries/aggregation/group_by_having/with-postgres-client.tstest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/compound/contract.prismatest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/compound/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/contract.prismatest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/nested/contract.prismatest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/nested/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/self/contract.prismatest/integration/test/ports/engines/queries/aggregation/many_count_relation/_fixture/self/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/many_count_relation/many_count_relation.test.tstest/integration/test/ports/engines/queries/aggregation/max/_fixture/common/contract.prismatest/integration/test/ports/engines/queries/aggregation/max/_fixture/common/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/max/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/aggregation/max/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/max/max.test.tstest/integration/test/ports/engines/queries/aggregation/min/_fixture/common/contract.prismatest/integration/test/ports/engines/queries/aggregation/min/_fixture/common/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/min/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/aggregation/min/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/min/min.test.tstest/integration/test/ports/engines/queries/aggregation/sum/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/aggregation/sum/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/sum/_fixture/numeric/contract.prismatest/integration/test/ports/engines/queries/aggregation/sum/_fixture/numeric/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/sum/sum.test.tstest/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/base/contract.prismatest/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/base/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/nested/contract.prismatest/integration/test/ports/engines/queries/aggregation/uniq-count-relation/_fixture/nested/prisma-next.config.tstest/integration/test/ports/engines/queries/aggregation/uniq-count-relation/uniq-count-relation.test.tstest/integration/test/ports/engines/queries/data_types/bigint/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/bigint/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/bigint/bigint.test.tstest/integration/test/ports/engines/queries/data_types/bool/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/bool/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/bool/bool.test.tstest/integration/test/ports/engines/queries/data_types/bytes/_fixture/relations/contract.prismatest/integration/test/ports/engines/queries/data_types/bytes/_fixture/relations/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/bytes/_fixture/scalars/contract.prismatest/integration/test/ports/engines/queries/data_types/bytes/_fixture/scalars/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/bytes/bytes.test.tstest/integration/test/ports/engines/queries/data_types/datetime/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/datetime/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/datetime/datetime.test.tstest/integration/test/ports/engines/queries/data_types/decimal/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/decimal/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/decimal/decimal.test.tstest/integration/test/ports/engines/queries/data_types/enum_type/_fixture/postgres/contract.prismatest/integration/test/ports/engines/queries/data_types/enum_type/_fixture/postgres/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/enum_type/enum_type.test.tstest/integration/test/ports/engines/queries/data_types/float/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/float/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/float/float.test.tstest/integration/test/ports/engines/queries/data_types/int/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/int/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/int/int.test.tstest/integration/test/ports/engines/queries/data_types/json/_fixture/scalar/contract.prismatest/integration/test/ports/engines/queries/data_types/json/_fixture/scalar/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/json/json.test.tstest/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/other/contract.prismatest/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/other/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/string/contract.tstest/integration/test/ports/engines/queries/data_types/native/postgres/_fixture/string/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/native/postgres/postgres.test.tstest/integration/test/ports/engines/queries/data_types/string/_fixture/contract.prismatest/integration/test/ports/engines/queries/data_types/string/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/string/string.test.tstest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/common/contract.prismatest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/common/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/enum/contract.prismatest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/enum/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/json/contract.prismatest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/json/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/lists/contract.prismatest/integration/test/ports/engines/queries/data_types/through_relation/_fixture/lists/prisma-next.config.tstest/integration/test/ports/engines/queries/data_types/through_relation/through_relation.test.tstest/integration/test/ports/engines/queries/distinct/_fixture/contract.prismatest/integration/test/ports/engines/queries/distinct/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/distinct/distinct.test.tstest/integration/test/ports/engines/queries/filters/bigint_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/bigint_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/bigint_filter/bigint_filter.test.tstest/integration/test/ports/engines/queries/filters/bytes_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/bytes_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/bytes_filter/bytes_filter.test.tstest/integration/test/ports/engines/queries/filters/decimal_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/decimal_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/decimal_filter/decimal_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/_fixture/decimal-list/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/_fixture/decimal-list/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/_fixture/enum/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/_fixture/enum/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/_fixture/list/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/_fixture/list/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/_fixture/mixed/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/_fixture/mixed/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/bigint_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/bigint_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/bigint_filter/bigint_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/bytes_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/bytes_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/bytes_filter/bytes_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/datetime_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/datetime_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/datetime_filter/datetime_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/decimal_filter/decimal_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/enum_filter/enum_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/common/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/common/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/default/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/default/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/list/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/failure/_fixture/list/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/failure/failure.test.tstest/integration/test/ports/engines/queries/filters/field_reference/float_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/float_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/float_filter/float_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/having_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/having_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/having_filter/having_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/having_filter/with-postgres-client.tstest/integration/test/ports/engines/queries/filters/field_reference/int_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/int_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/int_filter/int_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/list/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/list/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/json_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/json_filter/json_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/postgres-list-field-reference.tstest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/complex/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/complex/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-many/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-many/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one-list/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one-list/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/_fixture/one-to-one/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/relation_filter/relation_filter.test.tstest/integration/test/ports/engines/queries/filters/field_reference/string_filter/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/field_reference/string_filter/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/field_reference/string_filter/string_filter.test.tstest/integration/test/ports/engines/queries/filters/filter_regression/_fixture/compound-one-to-many/contract.prismatest/integration/test/ports/engines/queries/filters/filter_regression/_fixture/compound-one-to-many/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/filter_regression/_fixture/many-to-many/contract.prismatest/integration/test/ports/engines/queries/filters/filter_regression/_fixture/many-to-many/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/filter_regression/_fixture/one-to-many/contract.prismatest/integration/test/ports/engines/queries/filters/filter_regression/_fixture/one-to-many/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/filter_regression/filter_regression.test.tstest/integration/test/ports/engines/queries/filters/filters/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/filters/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/filters/filters.test.tstest/integration/test/ports/engines/queries/filters/json/_fixture/optional/contract.prismatest/integration/test/ports/engines/queries/filters/json/_fixture/optional/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/json/json.test.tstest/integration/test/ports/engines/queries/filters/list_filters/_fixture/base/contract.prismatest/integration/test/ports/engines/queries/filters/list_filters/_fixture/base/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/list_filters/_fixture/decimal/contract.prismatest/integration/test/ports/engines/queries/filters/list_filters/_fixture/decimal/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/list_filters/_fixture/json/contract.prismatest/integration/test/ports/engines/queries/filters/list_filters/_fixture/json/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/list_filters/list_filters.test.tstest/integration/test/ports/engines/queries/filters/many_relation/_fixture/25103/contract.prismatest/integration/test/ports/engines/queries/filters/many_relation/_fixture/25103/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/many_relation/_fixture/l2-to-one/contract.prismatest/integration/test/ports/engines/queries/filters/many_relation/_fixture/l2-to-one/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/many_relation/many_relation.test.tstest/integration/test/ports/engines/queries/filters/one2one_regression/_fixture/contract.prismatest/integration/test/ports/engines/queries/filters/one2one_regression/_fixture/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/one2one_regression/one2one_regression.test.tstest/integration/test/ports/engines/queries/filters/one_relation/_fixture/21356/contract.prismatest/integration/test/ports/engines/queries/filters/one_relation/_fixture/21356/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/one_relation/_fixture/21366/contract.prismatest/integration/test/ports/engines/queries/filters/one_relation/_fixture/21366/prisma-next.config.tstest/integration/test/ports/engines/queries/filters/one_relation/one_relation.test.ts
|
On it — I’ll consolidate the duplicated list-reference expression behind the existing wrappers. 👍 |
|
On it — I’ll centralize the raw PostgreSQL client exposure in the shared port harness and remove the copied helpers. 👍 |
|
On it — I’ll document why the three relation subqueries intentionally preserve upstream’s unordered operations. 👍 |
|
On it 👍 I’ll consolidate the duplicated list-field-reference expression implementation. |
|
On it 👍 I’ll document why the relation subqueries remain unordered for source fidelity. |
|
On it 👍 I’ll centralize the raw Postgres client setup in the shared port harness. |
|
Done in 2cbeedb: both operation-specific scalar/list wrappers now delegate to one private membership implementation while retaining their signatures and expressions. |
|
Done in 66d939a: |
|
Done in 3603ca9: the take, skip, and distinct relation row subqueries remain unordered, with concise comments tying that choice to the pinned upstream cases. |
3603ca9 to
b0893a6
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev+clanker@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
a4ac28c to
04f4941
Compare
|
Note GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer. |
A pg.enum(Mood)[] column could not be read: the array-of-enum OID is
allocated per-database, pg-types has no parser for it, and the wire
value arrived as the raw literal `{URGENT,LOW}`, so decoding crashed
before it could report which column failed.
Two independent fixes:
- materializeCodec called descriptor.factory detached from its
receiver (`blindCast<...>(descriptor.factory)(validated)(ctx)`), so
any descriptor whose factory builds its codec via `new XCodec(this)`
produced a codec with `descriptor === undefined`. That codec was
found correctly; only its `id` getter crashed inside
wrapDecodeFailure/wrapEncodeFailure, which is why the error named no
column. Calling factory as a method on descriptor fixes both paths.
- renderProjection/renderReturning now cast a many + pg/enum@1
projection to `::text[]`, putting the column on OID 1009 which
pg-types already parses into a string array. This is a target-owned
fact read from the contract, not a wire-value heuristic, and keeps
array-literal parsing out of the target-agnostic sql-runtime decoder.
Un-skips ports/engines/queries/filters/field-reference/enum-filter,
which was marked it.fails in #29924 without diagnosis: it was this
same decode bug via a native-enum array column.
Fixes #30164.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UcqoY3CKfnubdZt5YQk2Rq
Signed-off-by: Steven McClankerton <tatarintsev@prisma.io>
Linked issue
n/a — no ticket for this project batch.
At a glance
This is one of 201 executable cases derived from the first 500 prisma-engines query tests; the remaining cases receive explicit, reviewed non-port dispositions.
Summary
The engine query inventory was entirely unchecked, so Prisma Next compatibility and unsupported behavior were both implicit. This PR accounts for exactly the first 500 source cases and preserves case 501 as the boundary for subsequent work.
Decision
This PR ships the first engine-query accounting milestone as three explicit outcomes:
it.failsand documented one-to-one in the canonical failure ledger.All ports use public ORM, SQL-builder, Mongo AST, and contract-authoring surfaces. No production implementation changes are included.
Reviewer notes
*.test.tsfiles undertest/integration/test/ports/engines/queries/.prisma-engines@e922089b7d7502aff4249d5da3420f6fa55fc6ad.queries::filters::ported_filters::str_not_starts_with, is checked; case 501,str_ends_with, and all later cases remain untouched.How it fits together
it.fails, paired with precise current-behavior explanations infailing.md.non-ported/queries.engines-queries.mdlinks every one of the first 500 source identifiers to exactly one disposition.Behavior changes & evidence
queries/aggregation, with representative evidence ingroup_by.test.tsandgroup_by_having.test.ts.queries/data_types, includingpostgres.test.ts.queries/filters, with field-reference evidence inrelation_filter.test.tsandjson_filter.test.ts.failing.mdand exercised by suites such assum.test.tsandjson.test.ts.non-ported/queriesdistinguish unavailable connectors, APIs, authoring features, and engine-specific protocols instead of treating them as generic skips.Compatibility / migration / risk
There are no production API, runtime, or migration changes. The review risk is test fidelity: each port must retain the source schema, operation, inputs, and full assertions rather than merely exercise similar behavior. The reviewer protocol and one-to-one checklist accounting are intended to make that fidelity auditable.
Testing performed
pnpm build— 86 tasks successful.cd test/integration && pnpm typecheck— passed.pnpm lint— 101 tasks successful; informational pre-existing Biome diagnostics only.pnpm fixtures:check— passed with no fixture drift.git diff --check— passed.test.fails, 299 non-ported; no inboxes remain.Skill update
n/a — internal test inventory and review workflow only; no user-facing API or CLI surface changes.
Follow-ups
Alternatives considered
Checklist
git commit -s) per the DCO.TML-NNNN: <sentence-case title>form — n/a, this work has no Linear ticket.Summary by CodeRabbit
Tests
Documentation