@@ -4,15 +4,31 @@ use crate::planner::operator::table_scan::TableScanOperator;
44use crate :: storage:: { Iter , StatisticsMetaCache , TableCache , Transaction , ViewCache } ;
55use crate :: throw;
66use crate :: types:: index:: IndexMetaRef ;
7+ use crate :: types:: serialize:: TupleValueSerializableImpl ;
78
89pub ( crate ) struct IndexScan {
910 op : TableScanOperator ,
1011 index_by : IndexMetaRef ,
1112 ranges : Vec < Range > ,
13+ covered_deserializers : Option < Vec < TupleValueSerializableImpl > > ,
1214}
1315
14- impl From < ( TableScanOperator , IndexMetaRef , Range ) > for IndexScan {
15- fn from ( ( op, index_by, range) : ( TableScanOperator , IndexMetaRef , Range ) ) -> Self {
16+ impl
17+ From < (
18+ TableScanOperator ,
19+ IndexMetaRef ,
20+ Range ,
21+ Option < Vec < TupleValueSerializableImpl > > ,
22+ ) > for IndexScan
23+ {
24+ fn from (
25+ ( op, index_by, range, covered_deserializers) : (
26+ TableScanOperator ,
27+ IndexMetaRef ,
28+ Range ,
29+ Option < Vec < TupleValueSerializableImpl > > ,
30+ ) ,
31+ ) -> Self {
1632 let ranges = match range {
1733 Range :: SortedRanges ( ranges) => ranges,
1834 range => vec ! [ range] ,
@@ -22,6 +38,7 @@ impl From<(TableScanOperator, IndexMetaRef, Range)> for IndexScan {
2238 op,
2339 index_by,
2440 ranges,
41+ covered_deserializers,
2542 }
2643 }
2744}
@@ -51,6 +68,7 @@ impl<'a, T: Transaction + 'a> ReadExecutor<'a, T> for IndexScan {
5168 self . index_by,
5269 self . ranges,
5370 with_pk,
71+ self . covered_deserializers,
5472 )
5573 ) ;
5674
0 commit comments