MCPcopy Index your code
hub / github.com/TanStack/db / extractSourceWhereClauses

Function extractSourceWhereClauses

packages/db/src/query/optimizer.ts:247–286  ·  view source on GitHub ↗

* Extracts collection-specific WHERE clauses from a query for index optimization. * This analyzes the original query to identify single-source WHERE clauses that * reference collection sources (not subqueries), including joined collections. * * For outer joins, clauses referencing the nullable s

(
  query: QueryIR,
)

Source from the content-addressed store, hash-verified

245 * @returns Map of source aliases to their WHERE clauses
246 */
247function extractSourceWhereClauses(
248 query: QueryIR,
249): Map<string, BasicExpression<boolean>> {
250 const sourceWhereClauses = new Map<string, BasicExpression<boolean>>()
251
252 // Only analyze queries that have WHERE clauses
253 if (!query.where || query.where.length === 0) {
254 return sourceWhereClauses
255 }
256
257 // Split all AND clauses at the root level for granular analysis
258 const splitWhereClauses = splitAndClauses(query.where)
259
260 // Analyze each WHERE clause to determine which sources it touches
261 const analyzedClauses = splitWhereClauses.map((clause) =>
262 analyzeWhereClause(clause),
263 )
264
265 // Group clauses by single-source vs multi-source
266 const groupedClauses = groupWhereClauses(analyzedClauses)
267
268 // Determine which source aliases are on the nullable side of outer joins.
269 // WHERE clauses for these sources must not be used for index optimization
270 // because they should filter the final joined result, not the input data.
271 const nullableSources = getNullableJoinSources(query)
272
273 // Only include single-source clauses that reference collections directly
274 // and are not on the nullable side of an outer join
275 for (const [sourceAlias, whereClause] of groupedClauses.singleSource) {
276 // Check if this source alias corresponds to a collection reference
277 if (
278 isCollectionReference(query, sourceAlias) &&
279 !nullableSources.has(sourceAlias)
280 ) {
281 sourceWhereClauses.set(sourceAlias, whereClause)
282 }
283 }
284
285 return sourceWhereClauses
286}
287
288/**
289 * Determines if a source alias refers to a collection reference (not a subquery).

Callers 1

optimizeQueryFunction · 0.85

Calls 8

splitAndClausesFunction · 0.85
analyzeWhereClauseFunction · 0.85
groupWhereClausesFunction · 0.85
getNullableJoinSourcesFunction · 0.85
isCollectionReferenceFunction · 0.85
mapMethod · 0.45
hasMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected