// ĠCopyright Ġ 2 0 2 0 ĠAnd y ĠGro ve Ċ // Ċ // ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ // Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ // ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ // Ċ // Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ // Ċ // ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ // Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ // ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ // ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ // Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ċ package Ġio . and yg ro ve . k query . physical Ċ Ċ import Ġio . and yg ro ve . k query . datat ypes . Record Batch Ċ import Ġio . and yg ro ve . k query . datat ypes . Schema Ċ Ċ /** ĠA Ġphysical Ġplan Ġrepresents Ġan Ġexecutable Ġpiece Ġof Ġcode Ġthat Ġwill Ġproduce Ġdata . Ġ*/ Ċ interface ĠPhysical Plan Ġ{ ĊĊĠ Ġfun Ġschema (): ĠSchema ĊĊĠ Ġ/** ĠExecute Ġa Ġphysical Ġplan Ġand Ġproduce Ġa Ġseries Ġof Ġrecord Ġbatches . Ġ*/ ĊĠ Ġfun Ġexecute (): ĠSequence < Record Batch > ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġchildren Ġ( inputs ) Ġof Ġthis Ġphysical Ġplan . ĠThis Ġmethod Ġis Ġused Ġto Ġenable Ġuse Ġof Ġthe ĊĠĠ Ġ* Ġvisitor Ġpattern Ġto Ġwalk Ġa Ġquery Ġtree . ĊĠĠ Ġ*/ ĊĠ Ġfun Ġchildren (): ĠList < Physical Plan > ĊĊĠ Ġfun Ġpretty (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġformat ( this ) ĊĠ Ġ} Ċ } Ċ Ċ /** ĠFormat Ġa Ġlogical Ġplan Ġin Ġhuman - readable Ġform Ġ*/ Ċ private Ġfun Ġformat ( plan : ĠPhysical Plan , Ġindent : ĠInt Ġ= Ġ 0 ): ĠString Ġ{ ĊĠ Ġval Ġb Ġ= ĠStringBuilder () ĊĠĠ 0 . until ( indent ). forEach Ġ{ Ġb . append ("\ t ") Ġ} ĊĠ Ġb . append ( plan . toString ()). append ("\ n ") ĊĠ Ġplan . children (). forEach Ġ{ Ġb . append ( format ( it , Ġindent Ġ+ Ġ 1 )) Ġ} ĊĠ Ġreturn Ġb . toString () Ċ } Ċ