@@ -39,8 +39,10 @@ impl<'a, T: Transaction> StatisticMetaLoader<'a, T> {
3939 index_id : IndexId ,
4040 ) -> Result < Option < & StatisticsMeta > , DatabaseError > {
4141 let key = ( table_name. clone ( ) , index_id) ;
42- if let Some ( entry) = self . cache . get ( & key) {
43- return Ok ( entry. as_ref ( ) . map ( |entry| entry. meta ( ) ) ) ;
42+ match self . cache . get ( & key) {
43+ Some ( Some ( entry) ) => return Ok ( Some ( entry. meta ( ) ) ) ,
44+ Some ( None ) => return Ok ( None ) ,
45+ None => { }
4446 }
4547
4648 let Some ( statistics_meta) = self . tx . statistics_meta ( table_name. as_ref ( ) , index_id) ? else {
@@ -97,43 +99,40 @@ impl<'a, T: Transaction> StatisticMetaLoader<'a, T> {
9799 index_id : IndexId ,
98100 ) -> Result < Option < & CountMinSketch < DataValue > > , DatabaseError > {
99101 let key = ( table_name. clone ( ) , index_id) ;
100- if let Some ( entry ) = self . cache . get ( & key) {
101- if let Some ( entry) = entry . as_ref ( ) {
102+ match self . cache . get ( & key) {
103+ Some ( Some ( entry) ) => {
102104 if let Some ( sketch) = entry. sketch ( ) {
103105 return Ok ( Some ( sketch) ) ;
104106 }
105- } else {
106- return Ok ( None ) ;
107107 }
108+ Some ( None ) => return Ok ( None ) ,
109+ None => { }
108110 }
109111
110112 let Some ( sketch) = self . tx . statistics_sketch ( table_name. as_ref ( ) , index_id) ? else {
111113 return Ok ( None ) ;
112114 } ;
113- let meta = if let Some ( entry) = self . cache . get ( & key) {
114- if let Some ( entry) = entry. as_ref ( ) {
115- entry. meta ( ) . clone ( )
116- } else {
115+ let meta = match self . cache . get ( & key) {
116+ Some ( Some ( entry) ) => entry. meta ( ) . clone ( ) ,
117+ Some ( None ) | None => {
117118 let Some ( meta) = self . tx . statistics_meta ( table_name. as_ref ( ) , index_id) ? else {
119+ self . cache . put ( key, None ) ;
118120 return Ok ( None ) ;
119121 } ;
120122 meta
121123 }
122- } else {
123- let Some ( meta) = self . tx . statistics_meta ( table_name. as_ref ( ) , index_id) ? else {
124- return Ok ( None ) ;
125- } ;
126- meta
127124 } ;
128125 self . cache . put (
129126 key. clone ( ) ,
130127 Some ( StatisticsMetaCacheValue :: new ( meta) . with_sketch ( sketch) ) ,
131128 ) ;
132129
133- Ok ( self
134- . cache
135- . get ( & key)
136- . and_then ( |entry| entry. as_ref ( ) . and_then ( |entry| entry. sketch ( ) ) ) )
130+ Ok ( match self . cache . get ( & key) {
131+ Some ( Some ( entry) ) => entry. sketch ( ) ,
132+ Some ( None ) | None => {
133+ return Ok ( None ) ;
134+ }
135+ } )
137136 }
138137}
139138
0 commit comments