Skip to content

Commit d981af6

Browse files
committed
feat: expose considered indexes
1 parent 565e3b4 commit d981af6

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

src/remote/optimization.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const LiveQueryOptimization = z.discriminatedUnion("state", [
2828
costReductionPercentage: z.number(),
2929
indexRecommendations: z.array(IndexRecommendation),
3030
indexesUsed: z.array(z.string()),
31+
consideredIndexes: z.array(IndexRecommendation).optional(),
3132
explainPlan: z.custom<PostgresExplainStage>(),
3233
optimizedExplainPlan: z.custom<PostgresExplainStage>(),
3334
}),

src/remote/query-optimizer.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ export class QueryOptimizer extends EventEmitter<EventMap> {
429429
costReductionPercentage,
430430
indexRecommendations,
431431
indexesUsed,
432+
consideredIndexes: mapConsideredIndexes(result),
432433
explainPlan,
433434
optimizedExplainPlan: result.explainPlan,
434435
};
@@ -512,6 +513,7 @@ export class QueryOptimizer extends EventEmitter<EventMap> {
512513
costReductionPercentage,
513514
indexRecommendations,
514515
indexesUsed,
516+
consideredIndexes: mapConsideredIndexes(result),
515517
explainPlan,
516518
optimizedExplainPlan: result.explainPlan,
517519
};
@@ -582,6 +584,12 @@ function mapIndexRecommandations(
582584
});
583585
}
584586

587+
function mapConsideredIndexes(
588+
result: Extract<OptimizeResult, { kind: "ok" }>,
589+
): IndexRecommendation[] {
590+
return Array.from(result.triedIndexes.values());
591+
}
592+
585593
type PercentageDifference = number;
586594

587595
export function costDifferencePercentage(

0 commit comments

Comments
 (0)