package Ġorg . vit riv r . cott ont ail . execution . operators . sources Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġorg . vit riv r . cott ont ail . database . column . Column Def Ċ import Ġorg . vit riv r . cott ont ail . database . index . Index Ċ import Ġorg . vit riv r . cott ont ail . database . index . Index Tx Ċ import Ġorg . vit riv r . cott ont ail . database . queries . GroupId Ċ import Ġorg . vit riv r . cott ont ail . database . queries . predicates . Predicate Ċ import Ġorg . vit riv r . cott ont ail . execution . Transaction Context Ċ import Ġorg . vit riv r . cott ont ail . execution . operators . basics . Operator Ċ import Ġorg . vit riv r . cott ont ail . model . basics . Record Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ Abstract Entity Operator ] Ġthat Ġscans Ġan Ġ[ Index ] Ġand Ġstreams Ġall Ġ[ Record ] s Ġfound Ġwithin . Ċ Ġ* Ċ Ġ* Ġ@ author ĠR alph ĠG asser Ċ Ġ* Ġ@ version Ġ 1 . 4 . 0 Ċ Ġ*/ Ċ class ĠIndex Scan Operator ( groupId : ĠGroup Id , Ġprivate Ġval Ġindex : ĠIndex Tx , Ġprivate Ġval Ġpredicate : ĠPredicate , Ġprivate Ġval Ġpartition Index : ĠInt Ġ= Ġ 0 , Ġprivate Ġval Ġpartitions : ĠInt Ġ= Ġ 1 ) Ġ: ĠOperator . Source Operator ( groupId ) Ġ{ ĊĊĠĠĠ Ġ/** ĠThe Ġ[ Column Def ] Ġproduced Ġby Ġthis Ġ[ Index Scan Operator ]. Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġcolumns : ĠArray < Column Def <* >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . index . dbo . pro duces ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthis Ġ[ Index Scan Operator ] Ġto Ġa Ġ[ Flow ] Ġand Ġreturns Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠThe Ġ[ Transaction Context ] Ġused Ġfor Ġexecution . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Flow ] Ġrepresenting Ġthis Ġ[ Index Scan Operator ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto Flow ( context : ĠTransaction Context ): ĠFlow < Record > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this . partitions Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Index Scan Operator . index . filter ( this @ Index Scan Operator . predicate ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Index Scan Operator . index . filter Range ( this @ Index Scan Operator . predicate , Ġthis @ Index Scan Operator . partition Index , Ġthis @ Index Scan Operator . partitions ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }