Hi Paul/Padma,

Thank you so much for the responses. This function is supposed to return `any 
value` from the batch of incoming rows. Hence, the need to handle maps/lists.

This codegen is for the StreamingAggregator for Complex type(e.g. maps) in the 
incoming batch. It is trying to assign the values in the ComplexHolder to the 
outgoing MapVector.

MapVector vv9; // Output VV of StreamingAgg


    public void outputRecordValues(int outIndex)

        throws SchemaChangeException



            ComplexHolder out8;


                final ComplexHolder out = new ComplexHolder();

                FieldReader fr = work0;

                MapHolder value = work1;

                BigIntHolder nonNullCount = work2;

AnyValueComplexFunctions$MapAnyValue_output: {

    out.reader = fr;


                work0 = fr;

                work1 = value;

                work2 = nonNullCount;

                out8 = out;


            vv9 .getMutator().setSafe((outIndex), out8); //Don't have setSafe 
for MapVector



Please let me know your thoughts.


From: Paul Rogers <par0...@yahoo.com.INVALID>
Sent: Wednesday, April 11, 2018 12:40:15 PM
To: dev@drill.apache.org
Subject: Re: [DISCUSS] Regarding mutator interface

Note that, for maps and lists, there is nothing to set. Maps are purely 
containers for other vectors. Lists (you didn't mention whether "repeated" or 
"non-repeated") are also containers. Non-repeated lists are containers for 
unions, repeated-lists are containers for arrays.
Any setting should be done on the contained vectors. For lists, only the offset 
vector is updated.
So, another question is: what is the generated code trying to set?

- Paul

    On Wednesday, April 11, 2018, 12:33:52 PM PDT, Padma Penumarthy 
<ppenumar...@mapr.com> wrote:

 Can you explain how aggregation on complex type works (or supposed to work).


> On Apr 11, 2018, at 12:15 PM, Gautam Parai <gpa...@mapr.com> wrote:
> Hi all,
> I am implementing a new aggregate function which also handles Complex types 
> (map and list). However, the codegen barfs with
> CompileException: Line 104, Column 39: A method named "setSafe" is not 
> declared in any enclosing class nor any supertype, nor through a static import
> It looks like we do not have set()/ setSafe() methods for 
> MapVector/ListVector mutators.
> Should we add these methods to the Mutator interface to ensure all mutators 
> implement them? Is these a reason we chose not to do so?
> Please let me know your thoughts. Thanks!
> Gautam

Reply via email to