@@ -49,6 +49,7 @@ export class QueryOptimizer extends EventEmitter<EventMap> {
4949 private readonly queries = new Map < QueryHash , OptimizedQuery > ( ) ;
5050 private readonly disabledIndexes = new DisabledIndexes ( ) ;
5151
52+ private existingIndexes : IndexedTable [ ] = [ ] ;
5253 private target ?: Target ;
5354 private semaphore = new Sema ( QueryOptimizer . MAX_CONCURRENCY ) ;
5455 private _finish = Promise . withResolvers < void > ( ) ;
@@ -104,6 +105,10 @@ export class QueryOptimizer extends EventEmitter<EventMap> {
104105 return this . target ?. statistics . mode ?? QueryOptimizer . defaultStatistics ;
105106 }
106107
108+ getExistingIndexes ( ) : IndexedTable [ ] {
109+ return this . existingIndexes ;
110+ }
111+
107112 getDisabledIndexes ( ) : PgIdentifier [ ] {
108113 return [ ...this . disabledIndexes ] ;
109114 }
@@ -132,8 +137,8 @@ export class QueryOptimizer extends EventEmitter<EventMap> {
132137 const pg = this . manager . getOrCreateConnection ( this . connectable ) ;
133138 const ownStats = await Statistics . dumpStats ( pg , version , "full" ) ;
134139 const statistics = new Statistics ( pg , version , ownStats , statsMode ) ;
135- const existingIndexes = await statistics . getExistingIndexes ( ) ;
136- const filteredIndexes = this . filterDisabledIndexes ( existingIndexes ) ;
140+ this . existingIndexes = await statistics . getExistingIndexes ( ) ;
141+ const filteredIndexes = this . filterDisabledIndexes ( this . existingIndexes ) ;
137142 const optimizer = new IndexOptimizer ( pg , statistics , filteredIndexes , {
138143 trace : false ,
139144 } ) ;
0 commit comments