package Ġorg . vit riv r . cott ont ail . execution . tasks . entity . source Ċ Ċ import Ġit . un imi . ds i . fast util . long s . Long Open HashSet Ċ import Ġorg . vit riv r . cott ont ail . database . entity . Entity Ċ import Ġorg . vit riv r . cott ont ail . database . general . query Ċ import Ġorg . vit riv r . cott ont ail . execution . tasks . Task Setup Exception Ċ import Ġorg . vit riv r . cott ont ail . execution . tasks . basics . Execution Task Ċ import Ġorg . vit riv r . cott ont ail . model . basics . Column Def Ċ import Ġorg . vit riv r . cott ont ail . model . record set . Record set Ċ import Ġjava . lang . Long . min Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Execution Task ] Ġthat Ġsamples Ġthe Ġentries Ġof Ġa Ġgiven Ġ[ Entity ]. Ċ Ġ* Ċ Ġ* Ġ@ author ĠR alph ĠG asser Ċ Ġ* Ġ@ version Ġ 1 . 0 . 1 Ċ Ġ*/ Ċ class ĠEntity Sample Task ( private Ġval Ġentity : ĠEntity , Ġprivate Ġval Ġcolumns : ĠArray < Column Def <* >>, Ġval Ġsize : ĠLong , Ġseed : ĠLong ) Ġ: ĠExecution Task (" Entity Sample Task [ ${ entity . fq n } ][ ${ columns . map Ġ{ Ġit . name Ġ}. join ToString (",") }] ") Ġ{ ĊĊĠĠĠ Ġ/** ĠThe Ġ[ Split table Random ] Ġused Ġto Ġgenerate Ġthe Ġsample . Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġrandom Ġ= ĠSplit table Random ( seed ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . size Ġ<= Ġ 0 L ) Ġthrow ĠTask Setup Exception ( this , Ġ" Entity Sample Task Ġsample Ġsize Ġis Ġinvalid Ġ( size =${ this . size }). ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġthis Ġ[ Entity Linear Scan Task ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġexecute (): ĠRecord set Ġ= Ġthis . entity . Tx ( readonly Ġ= Ġtrue , Ġcolumns Ġ= Ġthis . columns ). query Ġ{ Ġtx Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmaximum Ġ= Ġthis . entity . statistics . max Tuple Id ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġthis . entity . statistics . rows ĊĠĠĠĠĠĠĠ Ġif Ġ( maximum Ġ> Ġ 2 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġused Ġ= ĠLong Open HashSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecord set Ġ= ĠRecord set ( this . columns , Ġthis . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( used . size Ġ< Ġmin ( count , Ġthis . size )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtuple Id Ġ= Ġthis . random . next Long ( 2 L , Ġmaximum ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( used . add ( tuple Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord set . add Row ( tx . read ( tuple Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecord set ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRecord set ( this . columns , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: ĠRecord set ( this . columns , Ġ 0 ) Ċ }