Minor Changes
-
This change introduces a configurable query plan cache. This option allows (#2385)
developers to provide their own query plan cache like so:new ApolloGateway({ queryPlannerConfig: { cache: new MyCustomQueryPlanCache(), }, });
The current default implementation is effectively as follows:
import { InMemoryLRUCache } from "@apollo/utils.keyvaluecache"; const cache = new InMemoryLRUCache<string>({ maxSize: Math.pow(2, 20) * 30, sizeCalculation<T>(obj: T): number { return Buffer.byteLength(JSON.stringify(obj), "utf8"); }, });
TypeScript users should implement the
QueryPlanCache
type which is now
exported by@apollo/query-planner
:import { QueryPlanCache } from '@apollo/query-planner'; class MyCustomQueryPlanCache implements QueryPlanCache { // ... }
-
Adds debug/testing query planner options (
debug.bypassPlannerForSingleSubgraph
) to bypass the query planning (#2441)
process for federated supergraph having only a single subgraph. The option is disabled by default, is not recommended
for production, and is not supported (it may be removed later). It is meant for debugging/testing purposes.
Patch Changes
-
Refactor the internal implementation of selection sets used by the query planner to decrease the code complexity and (#2387)
improve query plan generation performance in many cases. -
Optimises query plan generation for parts of queries that can statically be known to not cross across subgraphs (#2449)
-
Updated dependencies [
260c357c
,7bc0f8e8
,d4426ff9
,a9385bdb
,1a555d98
,ade7ceb8
,09382e74
,cab383b2
]:- @apollo/composition@2.4.0
- @apollo/federation-internals@2.4.0
- @apollo/query-planner@2.4.0