On May 8, 2013, at 9:31 PM, Lisen Mu <[email protected]> wrote:

> I'm not familiar with the optiq inside but seems it has something to do with 
> your last projection's ref. What's the purpose of  getHolder()?
> 
> Maybe not the right thing to do, but the attached patch could produce output 
> without nesting(but throws exceptions in some test...).

Lisen,

Your observations & patch helped get me through my mental block. I realized 
that "ref" is necessary for the "scan" operator, but not others. Therefore I 
made sure that each operator's JSON output the logical row type of the 
corresponding Optiq relational operator. Scan outputs records with a single 
field called _MAP; project contains whatever field(s) they asked for; filter 
outputs the same row type as its input; and so forth.

I was able to obsolete the "holder" notion, and some other nasty duck tape [ 
https://github.com/julianhyde/incubator-drill/commit/375dbf03157924860bfc6b3c7e1084cd91faa61d
 ]. I also implemented aggregation over the weekend [ 
https://github.com/julianhyde/incubator-drill/commit/febcb702c224f8aa148377272eb88929cfa15ee7
 ].

Thanks for your help.

Julian

Reply via email to