@@ -169,9 +169,13 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
169169 }
170170
171171 #[ cfg( any( test, feature = "testing" ) ) ]
172- pub async fn enable_index_for_testing ( & mut self , index : & IndexName ) -> anyhow:: Result < ( ) > {
172+ pub async fn enable_index_for_testing (
173+ & mut self ,
174+ namespace : TableNamespace ,
175+ index : & IndexName ,
176+ ) -> anyhow:: Result < ( ) > {
173177 let metadata = self
174- . pending_index_metadata ( index) ?
178+ . pending_index_metadata ( namespace , index) ?
175179 . ok_or_else ( || anyhow:: anyhow!( "Failed to find pending index: {}" , index) ) ?;
176180 self . enable_index ( & metadata. into_value ( ) ) . await
177181 }
@@ -369,7 +373,7 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
369373 for new_index in indexes_in_schema {
370374 remaining_indexes. remove ( & new_index. name ) ;
371375
372- match self . compare_new_and_existing_indexes ( new_index) ? {
376+ match self . compare_new_and_existing_indexes ( TableNamespace :: Global , new_index) ? {
373377 IndexComparison :: Added ( index) => diff. added . push ( index) ,
374378 IndexComparison :: Identical ( index) => diff. identical . push ( index) ,
375379 IndexComparison :: Replaced {
@@ -402,10 +406,11 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
402406
403407 fn compare_new_and_existing_indexes (
404408 & mut self ,
409+ namespace : TableNamespace ,
405410 new_index : DeveloperIndexMetadata ,
406411 ) -> anyhow:: Result < IndexComparison > {
407- let pending_index = self . pending_index_metadata ( & new_index. name ) ?;
408- let enabled_index = self . enabled_index_metadata ( & new_index. name ) ?;
412+ let pending_index = self . pending_index_metadata ( namespace , & new_index. name ) ?;
413+ let enabled_index = self . enabled_index_metadata ( namespace , & new_index. name ) ?;
409414
410415 fn identical_or_replaced (
411416 existing_index : ParsedDocument < TabletIndexMetadata > ,
@@ -543,9 +548,10 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
543548 /// pending_index_metadata.
544549 pub fn enabled_index_metadata (
545550 & mut self ,
551+ namespace : TableNamespace ,
546552 index_name : & IndexName ,
547553 ) -> anyhow:: Result < Option < ParsedDocument < TabletIndexMetadata > > > {
548- self . _index_metadata ( index_name, |indexes, reads, index_name| {
554+ self . _index_metadata ( namespace , index_name, |indexes, reads, index_name| {
549555 indexes. get_enabled ( reads, & index_name)
550556 } )
551557 }
@@ -558,9 +564,10 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
558564 /// or require_enabled_index_metadata instead.
559565 pub fn pending_index_metadata (
560566 & mut self ,
567+ namespace : TableNamespace ,
561568 index_name : & IndexName ,
562569 ) -> anyhow:: Result < Option < ParsedDocument < TabletIndexMetadata > > > {
563- self . _index_metadata ( index_name, |indexes, reads, index_name| {
570+ self . _index_metadata ( namespace , index_name, |indexes, reads, index_name| {
564571 indexes. get_pending ( reads, & index_name)
565572 } )
566573 }
@@ -575,6 +582,7 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
575582
576583 fn _index_metadata < ' b > (
577584 & ' b mut self ,
585+ namespace : TableNamespace ,
578586 index_name : & IndexName ,
579587 getter : impl FnOnce (
580588 & ' b mut TransactionIndex ,
@@ -585,18 +593,19 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
585593 if !self
586594 . tx
587595 . table_mapping ( )
588- . namespace ( TableNamespace :: Global )
596+ . namespace ( namespace )
589597 . name_exists ( index_name. table ( ) )
590598 {
591599 return Ok ( None ) ;
592600 }
593- let index_name = self . resolve_index_name ( index_name) ?;
601+ let index_name = self . resolve_index_name ( namespace , index_name) ?;
594602 Ok ( getter ( & mut self . tx . index , & mut self . tx . reads , index_name)
595603 . map ( |index| index. metadata . clone ( ) ) )
596604 }
597605
598606 pub fn stable_index_name (
599607 & mut self ,
608+ namespace : TableNamespace ,
600609 index_name : & IndexName ,
601610 table_filter : TableFilter ,
602611 ) -> anyhow:: Result < StableIndexName > {
@@ -612,24 +621,24 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
612621 . clone ( ) ;
613622 Ok ( StableIndexName :: Virtual (
614623 index_name. clone ( ) ,
615- self . resolve_index_name ( & physical_index_name) ?,
624+ self . resolve_index_name ( namespace , & physical_index_name) ?,
616625 ) )
617626 } else if self
618627 . tx
619628 . table_mapping ( )
620- . namespace ( TableNamespace :: Global )
629+ . namespace ( namespace )
621630 . name_exists ( index_name. table ( ) )
622631 {
623632 match table_filter {
624633 TableFilter :: IncludePrivateSystemTables => Ok ( StableIndexName :: Physical (
625- self . resolve_index_name ( index_name) ?,
634+ self . resolve_index_name ( namespace , index_name) ?,
626635 ) ) ,
627636 TableFilter :: ExcludePrivateSystemTables => {
628637 if index_name. table ( ) . is_system ( ) {
629638 Ok ( StableIndexName :: Missing )
630639 } else {
631640 Ok ( StableIndexName :: Physical (
632- self . resolve_index_name ( index_name) ?,
641+ self . resolve_index_name ( namespace , index_name) ?,
633642 ) )
634643 }
635644 } ,
@@ -639,14 +648,14 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
639648 }
640649 }
641650
642- fn resolve_index_name ( & mut self , index_name : & IndexName ) -> anyhow :: Result < TabletIndexName > {
643- let resolved = index_name . clone ( ) . map_table (
644- & self
645- . tx
646- . table_mapping ( )
647- . namespace ( TableNamespace :: Global )
648- . name_to_id ( ) ,
649- ) ?;
651+ fn resolve_index_name (
652+ & mut self ,
653+ namespace : TableNamespace ,
654+ index_name : & IndexName ,
655+ ) -> anyhow :: Result < TabletIndexName > {
656+ let resolved = index_name
657+ . clone ( )
658+ . map_table ( & self . tx . table_mapping ( ) . namespace ( namespace ) . name_to_id ( ) ) ?;
650659 Ok ( resolved. into ( ) )
651660 }
652661
@@ -699,7 +708,7 @@ impl<'a, RT: Runtime> IndexModel<'a, RT> {
699708 range : vec ! [ ] ,
700709 order : Order :: Asc ,
701710 } ) ;
702- let mut query_stream = ResolvedQuery :: new ( self . tx , index_query) ?;
711+ let mut query_stream = ResolvedQuery :: new ( self . tx , TableNamespace :: Global , index_query) ?;
703712
704713 let mut indexes = vec ! [ ] ;
705714 while let Some ( document) = query_stream. next ( self . tx , None ) . await ? {
0 commit comments