Skip to content
Draft
Changes from 1 commit
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
aa0c044
Reduce query parser argument cloning
tensordreams Jun 5, 2026
8939dc3
Avoid input object schema map allocation
tensordreams Jun 5, 2026
b135e3d
Avoid parsed argument value clone
tensordreams Jun 5, 2026
cc50b61
Avoid eager argument conversion errors
tensordreams Jun 5, 2026
ba4aa72
Avoid empty exclusion vector allocation
tensordreams Jun 5, 2026
78dfd45
Omit empty query arg db types
tensordreams Jun 6, 2026
1fe6a7c
Omit non-list result field arity
tensordreams Jun 6, 2026
dd03ee2
Serialize SQL string fragments compactly
tensordreams Jun 6, 2026
af7c591
Omit default result field db names
tensordreams Jun 6, 2026
04fdc54
Omit result field type tags
tensordreams Jun 6, 2026
95d2ee4
Compact scalar result field types
tensordreams Jun 6, 2026
6fcc107
Compact scalar query arg types
tensordreams Jun 6, 2026
ccaea7b
Compact scalar result field nodes
tensordreams Jun 6, 2026
fe2a479
Compact template SQL queries
tensordreams Jun 6, 2026
8da0a53
Compact result object nodes
tensordreams Jun 6, 2026
16f5dc6
Compact expression nodes
tensordreams Jun 6, 2026
96eac07
Compact in-memory ops serialization
tensordreams Jun 6, 2026
b021a14
Compact parameter fragments
tensordreams Jun 6, 2026
4dc9111
Compact tuple parameter fragments
tensordreams Jun 6, 2026
4debcd0
Compact Prisma value placeholders
tensordreams Jun 6, 2026
9c98a94
Compact query plan support structures
tensordreams Jun 6, 2026
da6c701
Compact query plan data rules
tensordreams Jun 6, 2026
ba182db
Compact native scalar query arg types
tensordreams Jun 6, 2026
ed7f1d1
Compact Prisma value generator calls
tensordreams Jun 6, 2026
1725c63
Compact query plan validation errors
tensordreams Jun 6, 2026
432c9db
Compact scalar type names in query plans
tensordreams Jun 6, 2026
974e1b4
Add query compiler allocation profile example
tensordreams Jun 6, 2026
babed27
Avoid result mapper lookup maps
tensordreams Jun 6, 2026
cc32799
Skip empty nested relation selection merge
tensordreams Jun 6, 2026
b7d4eec
Avoid extra linking field iterator allocation
tensordreams Jun 6, 2026
5651e93
Avoid result scope binding name allocations
tensordreams Jun 6, 2026
c3fe406
Reuse incoming query graph edges during translation
tensordreams Jun 6, 2026
5d015d9
Avoid root node vector for single-root translation
tensordreams Jun 6, 2026
af75c51
Avoid redundant single result scope binding
tensordreams Jun 6, 2026
9b42bd6
Optimize unique filter extraction
tensordreams Jun 6, 2026
30a32a2
Avoid cloning result mapper selections
tensordreams Jun 6, 2026
38e7af1
Avoid dependency union vector allocation
tensordreams Jun 6, 2026
176fd25
Pre-size selected field extraction
tensordreams Jun 6, 2026
395aad1
Pre-size search filter folding output
tensordreams Jun 6, 2026
d87e1ef
Avoid read field selection reallocations
tensordreams Jun 6, 2026
677a3d4
Avoid single filter wrapper in read translation
tensordreams Jun 6, 2026
659fb89
Avoid hash set dedup in nested set
tensordreams Jun 6, 2026
3539a10
Reuse connect-or-create child identifiers
tensordreams Jun 6, 2026
ffe098e
Avoid singleton parsed input vec allocation
tensordreams Jun 6, 2026
4bf9603
Avoid single selection filter wrappers
tensordreams Jun 7, 2026
1327666
Omit empty data map enums
tensordreams Jun 7, 2026
1260018
Avoid singleton dependency seq wrappers
tensordreams Jun 7, 2026
dd196d5
Reuse child link for connect-or-create existence checks
tensordreams Jun 7, 2026
87c6a6f
Fast-path contained field selection merges
tensordreams Jun 7, 2026
1b8fc72
Hoist nested create linking fields
tensordreams Jun 7, 2026
ada2906
Avoid intermediate dependency node id strings
tensordreams Jun 7, 2026
ca6d020
Emit raw nested read plans
tensordreams Jun 7, 2026
251540e
Emit raw nested column indexes
tensordreams Jun 7, 2026
da30829
Add query compiler allocation bucket profiling
tensordreams Jun 7, 2026
2057e31
Avoid scalar placeholder type string allocation
tensordreams Jun 7, 2026
1beea2f
Move selection order names when possible
tensordreams Jun 7, 2026
cc75ecb
Move aggregation selection tree names
tensordreams Jun 7, 2026
e8854f6
Use raw nested reads for implicit many-to-many
tensordreams Jun 7, 2026
4352448
Use mutable query parser paths
tensordreams Jun 8, 2026
8d02976
Avoid cloning raw related read queries
tensordreams Jun 8, 2026
327fdc1
Use SmallVec for nested write parser operations
tensordreams Jun 8, 2026
7b0f332
Avoid raw nested relation scalar allocations
tensordreams Jun 8, 2026
a05eab3
Avoid boxed column iterators for model projections
tensordreams Jun 8, 2026
e98dd7b
Avoid raw nested column index maps
tensordreams Jun 8, 2026
a62504a
Use SmallVec for parser validation paths
tensordreams Jun 9, 2026
8778c84
Avoid nested relation selection Vec
tensordreams Jun 10, 2026
580547b
Compact result field type scalars
tensordreams Jun 11, 2026
d9b98f0
perf(query-compiler): emit raw nested relation ops
tensordreams Jun 11, 2026
21a8db2
perf(query-compiler): store result object fields in vectors
tensordreams Jun 12, 2026
2e6fa9f
test(query-compiler): update raw nested pagination snapshots
tensordreams Jun 12, 2026
69faaa9
perf(query-compiler): skip search merge for no-search groups
tensordreams Jun 12, 2026
63ac52c
perf(query-compiler): cache result reachability during translation
tensordreams Jun 12, 2026
fd443cd
perf(query-compiler): avoid synthetic read query names
tensordreams Jun 12, 2026
6b97cbc
perf(query-compiler): reduce virtual field selection allocations
tensordreams Jun 12, 2026
202f7b0
perf(query-compiler): reuse dependency reload candidates
tensordreams Jun 12, 2026
179cdcb
perf(query-compiler): iterate projected dependency edges
tensordreams Jun 12, 2026
f84cdb2
perf(query-compiler): avoid compound selector materialization
tensordreams Jun 12, 2026
a30ce85
perf(query-compiler): avoid cloning incoming if edges
tensordreams Jun 12, 2026
37b0b01
perf(query-compiler): stream aggregate result mappings
tensordreams Jun 12, 2026
9b870cf
perf(query-compiler): join m2m connect-or-create branches
tensordreams Jun 12, 2026
6f256b2
perf(query-compiler): skip nested-only update nodes
tensordreams Jun 12, 2026
34bde27
perf(query-compiler): skip nested-only upsert update nodes
tensordreams Jun 12, 2026
d3d4554
perf(query-compiler): specialize empty nested set
tensordreams Jun 12, 2026
a3ee45d
perf(query-compiler): skip noop upsert updates
tensordreams Jun 12, 2026
a87f6cc
perf(query-compiler): skip required set disconnect updates
tensordreams Jun 12, 2026
e761557
perf(request-handlers): collect selection exclusions inline
tensordreams Jun 12, 2026
491ce36
perf(query-compiler): skip raw nested result maps
tensordreams Jun 12, 2026
8b2a45c
perf(query-compiler): skip m2m create return node
tensordreams Jun 18, 2026
825e696
perf(query-compiler): merge read selection extraction
tensordreams Jun 18, 2026
b2377d6
Reserve query graph visited capacity
tensordreams Jun 18, 2026
fd906df
Store projected placeholders directly
tensordreams Jun 18, 2026
0240461
Skip identity dependency bindings
tensordreams Jun 18, 2026
09374a9
perf(query-compiler): join shared nested upsert m2m connect
tensordreams Jun 19, 2026
a38dbd8
perf(query-compiler): consume singleton parsed values
tensordreams Jun 19, 2026
102c8fb
perf(query-compiler): own required nested set phase
tensordreams Jun 19, 2026
0f03048
perf(query-compiler): skip create branch return forwarding
tensordreams Jun 19, 2026
e14835e
perf(query-compiler): return if condition rows directly
tensordreams Jun 19, 2026
d2fa2a3
perf(query-compiler): skip m2m disconnect child read
tensordreams Jun 19, 2026
b64c854
perf(query-compiler): compact validation expectations
tensordreams Jun 19, 2026
45947ad
perf(query-compiler): skip m2m set empty child read
tensordreams Jun 19, 2026
6a92e4d
perf(query-compiler): skip m2m set child read
tensordreams Jun 19, 2026
6ad7f3a
perf(query-compiler): narrow empty update carrier projection
tensordreams Jun 19, 2026
bd002ef
perf(query-compiler): return nested upsert shared connect condition
tensordreams Jun 19, 2026
d49c30d
perf(query-compiler): share empty upsert result read
tensordreams Jun 19, 2026
d89ebbd
perf(query-compiler): share nested-only upsert result read
tensordreams Jun 19, 2026
a018a97
perf(query-compiler): emit raw nested m2m relation ops
tensordreams Jun 19, 2026
0d2d3ad
perf(query-compiler): remap raw nested m2m op fields
tensordreams Jun 19, 2026
241f2cb
perf(query-compiler): emit raw nested one2m relation ops
tensordreams Jun 19, 2026
f23bb74
perf(query-compiler): skip FK-backed nested update child read
tensordreams Jun 22, 2026
9f53515
test(query-compiler): add M2M connect fixture
tensordreams Jun 22, 2026
c700d8f
perf(query-compiler): emit raw nested final-owner schedule
tensordreams Jun 22, 2026
d59deb1
perf(quaint): support postgres insert from selection
tensordreams Jun 22, 2026
2900039
perf(quaint): support insert common table expressions
tensordreams Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Skip identity dependency bindings
Signed-off-by: Alexey Orlenko's AI Agent <robot@aqrln.net>
  • Loading branch information
tensordreams committed Jun 18, 2026
commit 024046117633790e71d580ba68191b2f0396b186
49 changes: 23 additions & 26 deletions query-compiler/query-compiler/src/translate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -528,36 +528,37 @@ impl<'a, 'b> NodeTranslator<'a, 'b> {
.iter()
.flat_map(|edge| {
let edge_content = self.graph.edge_content(edge);
let Some(QueryGraphDependency::ProjectedDataDependency(selection, _, expectation)) = edge_content
let Some(QueryGraphDependency::ProjectedDataDependency(selection, sink, expectation)) = edge_content
else {
return Either::Left(std::iter::empty());
};

let requires_unique = matches!(
edge_content,
Some(QueryGraphDependency::ProjectedDataDependency(_, sink, _))
if sink.is_unique()
);
let requires_unique = sink.is_unique();

let source = self.graph.edge_source(edge);

let expr = Expression::Get {
name: binding::node_result(source),
};
let expr = match expectation {
Some(expectation) => Expression::validate_expectation(expectation, expr),
None => expr,
};
let expr = if requires_unique {
Expression::Unique(expr.into())
} else {
expr
};

let parent_binding = std::iter::once(Binding::new(source.id(), expr));
let needs_parent_binding = expectation.is_some() || requires_unique;
let parent_binding = needs_parent_binding.then(|| {
let expr = Expression::Get {
name: binding::node_result(source),
};
let expr = match expectation {
Some(expectation) => Expression::validate_expectation(expectation, expr),
None => expr,
};
let expr = if requires_unique {
Expression::Unique(expr.into())
} else {
expr
};

Binding::new(source.id(), expr)
});

let parent_bindings = parent_binding.into_iter();

if create_field_bindings {
Either::Right(Either::Left(parent_binding.chain(selection.selections().map(
Either::Right(Either::Left(parent_bindings.chain(selection.selections().map(
move |field| {
Binding::new(
binding::projected_dependency(source, field),
Expand All @@ -572,13 +573,9 @@ impl<'a, 'b> NodeTranslator<'a, 'b> {
},
))))
} else {
Either::Right(Either::Right(parent_binding))
Either::Right(Either::Right(parent_bindings))
}
})
.filter(|binding| match &binding.expr {
Expression::Get { name, .. } => name != &binding.name,
_ => true,
})
.collect::<Vec<_>>();

// translate plucks the edges coming into node, we need to avoid accessing it afterwards
Expand Down