package Ġdev . kom u . ah wen . query Ċ Ċ import Ġdev . kom u . ah wen . metadata . Metadata Manager Ċ import Ġdev . kom u . ah wen . record . RID Ċ import Ġdev . kom u . ah wen . record . Schema Ċ import Ġdev . kom u . ah wen . tx . Transaction Ċ import Ġdev . kom u . ah wen . types . ColumnName Ċ import Ġdev . kom u . ah wen . types . TableName Ċ Ċ /** Ċ Ġ* ĠA Ġplan Ġfor Ġreading Ġdata Ġfrom Ġa Ġtable . Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġresulting Ġ[ Table Scan ] Ġis Ġexecuted Ġas Ġit Ġis , Ġit Ġwill Ġperform Ġa Ġfull Ġtable Ġscan , Ċ Ġ* Ġbut Ġit Ġalso Ġoffers Ġmethods Ġto Ġnavigate Ġdirectly Ġonto Ġcertain Ġrow Ġby Ġ[ RID ]. ĠThis Ġis Ċ Ġ* Ġuseful Ġwith Ġindices Ġthat Ġstore Ġthese Ġrow Ġids . Ċ Ġ*/ Ċ class ĠTable Plan ( ĊĠĠĠ ĠtableName : ĠTable Name , ĊĠĠĠ Ġmetadata Manager : ĠMetadata Manager , ĊĠĠĠ Ġprivate Ġval Ġtx : ĠTransaction Ċ ) Ġ: ĠPlan Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġti Ġ= Ġmetadata Manager . getTable Info ( tableName , Ġtx ) ĊĠĠĠ Ġprivate Ġval Ġsi Ġ= Ġmetadata Manager . get Stat Info ( tableName , Ġti , Ġtx ) ĊĊĠĠĠ Ġoverride Ġfun Ġopen (): ĠTable Scan Ġ= ĊĠĠĠĠĠĠĠ ĠTable Scan ( ti , Ġtx ) ĊĊĠĠĠ Ġoverride Ġval Ġblocks Ac cessed : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsi . num Blocks ĊĊĠĠĠ Ġoverride Ġval Ġrecords Output : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsi . num Records ĊĊĠĠĠ Ġoverride Ġfun Ġdistinct Values ( column : ĠColumn Name ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġsi . distinct Values ( column ) ĊĊĠĠĠ Ġoverride Ġval Ġschema : ĠSchema ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġti . schema ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"[ Table Plan Ġname =${ ti . tableName }] " Ċ } Ċ