Yes. You don’t need an “implement” method (or yours can just throw).
You could use your own serialization to/from JSON or you could use RelJsonWriter/RelJsonReader. Julian > On Nov 23, 2015, at 5:31 PM, Jacques Nadeau <jacq...@dremio.com> wrote: > > We could create serializers and deserializers for the logical plan stuff. > It looks like we can resolve the costing through metadata providers unless > I misunderstood what Julian was suggesting. > > > > -- > Jacques Nadeau > CTO and Co-Founder, Dremio > > On Mon, Nov 23, 2015 at 5:12 PM, Jinfeng Ni <jinfengn...@gmail.com> wrote: > >> @Jacaues, >> >> Every DrillLogicalRel has to override computeSelfCost(), and implement >> implement() method. The latter is to get Logical Plan, which is one of >> three input types Drill should accept (SQL, Logical Plan, Physical >> Plan). >> >> So, for now, we do have to override/exend all DrillLogicalRel. >> >> >> On Mon, Nov 23, 2015 at 4:55 PM, Julian Hyde <jh...@apache.org> wrote: >>> I’m not sure what properties / behavior you want to override but >> remember that Calcite specifies a lot of brings as traits or metadata. >>> >>> For example, “double RelNode.getRows()" is deprecated and you would >> these days use RelMetadataQuery.getRowCount(). You would not need to >> sub-class a RelNode to override its row-count estimate, just supply a >> different metadata provider. >>> >>> Julian >>> >>> >>>> On Nov 23, 2015, at 4:50 PM, Jacques Nadeau <jacq...@dremio.com> wrote: >>>> >>>> Yes, my suggestion is removal of DRILL_LOGICAL. @Hsuan, this is >> independent >>>> from the number of phases and I'm not suggesting changing that. >>>> >>>> My main thought was: if we only need to override one or two rels, do >> only >>>> that rather than having a wholesale copy of every operator with a bunch >> of >>>> basic noop rules. >>>> >>>> -- >>>> Jacques Nadeau >>>> CTO and Co-Founder, Dremio >>>> >>>> On Mon, Nov 23, 2015 at 4:37 PM, Jinfeng Ni <jinfengn...@gmail.com> >> wrote: >>>> >>>>> @Jacques, are you talking about removing the convention DRILL_LOGICAL? >>>>> >>>>> DrillRel extends Calcite's LogialRel. It overrides some LogicalRel's >>>>> methods, and adds new methods. Therefore, even we remove >>>>> DRILL_LOGICAL convention, we still have to maintain a set of extended >>>>> class from Calcite Logical. I'm not clear what benefit we would get by >>>>> removing the DRILL_LOGICAL convention. >>>>> >>>>> If we want to remove the complete set of DrillLogical classes, then >>>>> I'm not sure where we put the Drill specific logic, for instance, >>>>> Drill Join has certain restriction different from Calcite Join. >>>>> >>>>> >>>>> >>>>> >>>>> On Mon, Nov 23, 2015 at 4:11 PM, Hsuan Yi Chu <hyi...@maprtech.com> >> wrote: >>>>>> My understanding is: >>>>>> In logical planning, we determine the "structure" of the tree (e.g., >> join >>>>>> order) >>>>>> And then in physical, we determine the implementation (e.g., merge vs >>>>> hash >>>>>> join). >>>>>> >>>>>> This staging seems clean to me. So what is the motivation to merge >> them >>>>> all >>>>>> together? >>>>>> >>>>>> >>>>>> On Mon, Nov 23, 2015 at 2:51 PM, Jacques Nadeau <jacq...@dremio.com> >>>>> wrote: >>>>>> >>>>>>> Anybody think we should just get rid of Drels (Rel > Drel > Prel) and >>>>> use >>>>>>> Calcite's logical representation directly (Rel > Prel)? >>>>>>> >>>>>>> -- >>>>>>> Jacques Nadeau >>>>>>> CTO and Co-Founder, Dremio >>>>>>> >>>>>>> On Mon, Nov 23, 2015 at 1:57 PM, Mehant Baid <baid.meh...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Currently all rules based on Calcite logical rels and Drill logical >>>>> rels >>>>>>>> are put together and are fired together. As part of DRILL-3996, >>>>> Jinfeng >>>>>>>> will break it down into different phases. I should be able to take >>>>>>>> advantage of this and move the directory based partition pruning to >>>>> fire >>>>>>>> based on Calcite rels. >>>>>>>> >>>>>>>> Thanks >>>>>>>> Mehant >>>>>>>> >>>>>>>> >>>>>>>> On 11/23/15 10:58 AM, Hanifi GUNES wrote: >>>>>>>> >>>>>>>>> The general idea of multi-phase pruning makes sense to me. I am >>>>>>> wondering, >>>>>>>>> though, are we referring to introducing a new planning phase before >>>>> the >>>>>>>>> logical or separating out the logic so as to make directory pruning >>>>> kick >>>>>>>>> off ahead of column partitioning? >>>>>>>>> >>>>>>>>> 2015-11-23 10:33 GMT-08:00 Mehant Baid <baid.meh...@gmail.com>: >>>>>>>>> >>>>>>>>> As part of DRILL-3996 < >>>>> https://issues.apache.org/jira/browse/DRILL-3996 >>>>>>>> >>>>>>>>>> Jinfeng mentioned that he plans to move the directory based >> pruning >>>>>>> rule >>>>>>>>>> earlier than column based pruning. I want to expand on that a >>>>> little, >>>>>>>>>> provide the motivation and gather thoughts/ feedback. >>>>>>>>>> >>>>>>>>>> Currently both the directory based pruning and the column based >>>>> pruning >>>>>>>>>> is >>>>>>>>>> fired in the same planning phase and are based on Drill logical >>>>> rels. >>>>>>>>>> This >>>>>>>>>> is not optimal in the case where data is organized in such a way >>>>> that >>>>>>>>>> both >>>>>>>>>> directory based pruning and column based pruning can be applied >>>>> (when >>>>>>> the >>>>>>>>>> data is organized with a nested directory structure plus the >>>>> individual >>>>>>>>>> files contain partition columns). As part of creating the Drill >>>>> logical >>>>>>>>>> scan we read the footers of all the files involved. If the >> directory >>>>>>>>>> based >>>>>>>>>> pruning rule is fired earlier (rule to fire based on calcite >> logical >>>>>>>>>> rels) >>>>>>>>>> then we will be able to prune out unnecessary directories and save >>>>> the >>>>>>>>>> work >>>>>>>>>> of reading the footers of these files. >>>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> Mehant >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>> >>