package Ġorg . bal list ac omp ute . logical Ċ Ċ import Ġorg . apache . arrow . vector . types . pojo . Schema ĊĊ Ċ /** Ċ Ġ* ĠA Ġlogical Ġplan Ġrepresents Ġa Ġdata Ġtransformation Ġor Ġaction Ġthat Ġreturns Ġa Ġrelation Ġ( a Ġset Ġof Ġtuples ). Ċ Ġ*/ Ċ interface ĠLogical Plan Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġschema Ġof Ġthe Ġdata Ġthat Ġwill Ġbe Ġproduced Ġby Ġthis Ġlogical Ġplan . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġschema (): ĠSchema ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġchildren Ġ( inputs ) Ġof Ġthis Ġlogical Ġplan . ĠThis Ġmethod Ġis Ġused Ġto Ġenable Ġuse Ġof Ġthe ĊĠĠĠĠ Ġ* Ġvisitor Ġpattern Ġto Ġwalk Ġa Ġquery Ġtree . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchildren (): ĠList < Logical Plan > Ċ Ċ } Ċ Ċ /** ĠFormat Ġa Ġlogical Ġplan Ġin Ġhuman - readable Ġform Ġ*/ Ċ fun Ġformat ( plan : ĠLogical 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 () Ċ } Ċ