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.
Gautam
________________________________
From: Paul Rogers <[email protected]>
Sent: Wednesday, April 11, 2018 12:40:15 PM
To: [email protected]
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?
Thanks,
- Paul
On Wednesday, April 11, 2018, 12:33:52 PM PDT, Padma Penumarthy
<[email protected]> wrote:
Can you explain how aggregation on complex type works (or supposed to work).
Thanks
Padma
> On Apr 11, 2018, at 12:15 PM, Gautam Parai <[email protected]> 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