@@ -162,8 +162,8 @@ export interface GroupedWhereClauses {
162
162
export interface OptimizationResult {
163
163
/** The optimized query with WHERE clauses potentially moved to subqueries */
164
164
optimizedQuery : QueryIR
165
- /** Map of collection aliases to their extracted WHERE clauses for index optimization */
166
- collectionWhereClauses : Map < string , BasicExpression < boolean > >
165
+ /** Map of source aliases to their extracted WHERE clauses for index optimization */
166
+ sourceWhereClauses : Map < string , BasicExpression < boolean > >
167
167
}
168
168
169
169
/**
@@ -184,14 +184,14 @@ export interface OptimizationResult {
184
184
* where: [eq(u.dept_id, 1), gt(p.views, 100)]
185
185
* }
186
186
*
187
- * const { optimizedQuery, collectionWhereClauses } = optimizeQuery(originalQuery)
187
+ * const { optimizedQuery, sourceWhereClauses } = optimizeQuery(originalQuery)
188
188
* // Result: Single-source clauses moved to deepest possible subqueries
189
- * // collectionWhereClauses : Map { 'u' => eq(u.dept_id, 1), 'p' => gt(p.views, 100) }
189
+ * // sourceWhereClauses : Map { 'u' => eq(u.dept_id, 1), 'p' => gt(p.views, 100) }
190
190
* ```
191
191
*/
192
192
export function optimizeQuery ( query : QueryIR ) : OptimizationResult {
193
- // First, extract collection WHERE clauses before optimization
194
- const collectionWhereClauses = extractCollectionWhereClauses ( query )
193
+ // First, extract source WHERE clauses before optimization
194
+ const sourceWhereClauses = extractSourceWhereClauses ( query )
195
195
196
196
// Apply multi-level predicate pushdown with iterative convergence
197
197
let optimized = query
@@ -214,7 +214,7 @@ export function optimizeQuery(query: QueryIR): OptimizationResult {
214
214
215
215
return {
216
216
optimizedQuery : cleaned ,
217
- collectionWhereClauses ,
217
+ sourceWhereClauses ,
218
218
}
219
219
}
220
220
@@ -224,16 +224,16 @@ export function optimizeQuery(query: QueryIR): OptimizationResult {
224
224
* to specific collections, but only for simple queries without joins.
225
225
*
226
226
* @param query - The original QueryIR to analyze
227
- * @returns Map of collection aliases to their WHERE clauses
227
+ * @returns Map of source aliases to their WHERE clauses
228
228
*/
229
- function extractCollectionWhereClauses (
229
+ function extractSourceWhereClauses (
230
230
query : QueryIR
231
231
) : Map < string , BasicExpression < boolean > > {
232
- const collectionWhereClauses = new Map < string , BasicExpression < boolean > > ( )
232
+ const sourceWhereClauses = new Map < string , BasicExpression < boolean > > ( )
233
233
234
234
// Only analyze queries that have WHERE clauses
235
235
if ( ! query . where || query . where . length === 0 ) {
236
- return collectionWhereClauses
236
+ return sourceWhereClauses
237
237
}
238
238
239
239
// Split all AND clauses at the root level for granular analysis
@@ -254,12 +254,12 @@ function extractCollectionWhereClauses(
254
254
if ( isCollectionReference ( query , sourceAlias ) ) {
255
255
// Check if the WHERE clause can be converted to collection-compatible format
256
256
if ( isConvertibleToCollectionFilter ( whereClause ) ) {
257
- collectionWhereClauses . set ( sourceAlias , whereClause )
257
+ sourceWhereClauses . set ( sourceAlias , whereClause )
258
258
}
259
259
}
260
260
}
261
261
262
- return collectionWhereClauses
262
+ return sourceWhereClauses
263
263
}
264
264
265
265
/**
0 commit comments