Expand description
Engine capability marker traits.
Each trait in this module marks a capability that some QueryEngine
impls satisfy and others don’t. The macro DSL (phase 3+) and the
generated input types (phase 2) carry where E: SupportsX bounds on
the methods that produce capability-dependent SQL. Using such a
method against an engine that doesn’t impl the trait fails to compile
with a clear diagnostic.
Engine crates (prax-postgres, prax-mysql, …) impl the traits
they satisfy on their concrete engine types. Phase 1 only defines
the traits; engine impls land in phase 2.
Traits§
- Supports
Array Ops - Engine supports native array column operators (
contains,overlaps, …). - Supports
Case Insensitive Mode - Engine has native case-insensitive comparison (
ILIKE,COLLATE NOCASE, equivalent). Engines without it fall back toLOWER(...)comparisons and do not need to impl this trait. - Supports
Correlated Subquery - Engine supports correlated subqueries in WHERE clauses.
- Supports
Full Text Search - Engine supports full-text search predicates.
- Supports
Generated Columns - Engine supports DDL for
GENERATED ALWAYS AS (expr) STORED|VIRTUALcomputed columns. - Supports
Json Path - Engine supports JSON-path filter operators (
path_eq,path_gt, etc.). - Supports
Nested Writes - Engine supports Prisma-style nested writes
(
create/connect/connect_or_create/disconnect/set/update/upsert/delete/delete_manyinsidedata). - Supports
Relation Filter - Engine supports relation filters (
some/every/none/is/is_not) that lower to correlated EXISTS / NOT EXISTS subqueries (or the equivalent in non-SQL engines). - Supports
Scalar Subquery InSelect - Engine supports scalar subqueries in the SELECT list.