Thanks Enrico and sorry for using a different email address to reply.

I agree that an interface could be a good idea. I am far from an expert in
Calcite, but I may try to implement something along those lines just to see
how difficult it is.  Anyone else sees other reasons for or against
Object[] as the base for Calcite Rows ?

Best,

Inigo

On Thu, Nov 23, 2017 at 10:04 PM, Enrico Olivelli <eolive...@gmail.com>
wrote:

> Il mer 22 nov 2017, 22:28 Iñigo Mediavilla <imedi...@gmail.com> ha
> scritto:
>
> > Hello,
> >
> > I'm using Calcite to provide an SQL interface (Read-Only) for a Java
> > Service that contains its data in memory. However most of the fields are
> > primitive types and exposing them in a ProjectableFilterableTable forces
> > boxing of the fields values since the scan method returns
> > Enumerable<Object[]>.
> >
>
> I see another issue, maybe from a different perspective.
> Having to deal with Object[] means that you always have to unpack your
> record to have this particular representation. For instance in my system I
> have a page of data loaded in memory and it contains a bunch of
> records/tuples.
> If I want to feed Calcite I always have to unpack each record to Object[],
> and as there is a projection to apply very often a new Object[] is to be
> created. This is not efficient and not GC friendly.
> A great enhancement maybe it would be to have some interface instead of the
> bare array.
> This will enable the underlying implementation not to deserialize cells
> Object[]
>
> As far as my limited experience of Calcite suggests me this change will be
> very difficult to introduce as it will break binary compatibility, as most
> of the Enumerable stuff is done with reflection.
>
> Just my 2 cents
> Enrico
>
>
> >
> >
> >
> >
> > When I look at how ProjectableFilterableTable is used, it seems that for
> > every Object array calcite is generating a Row object that relies on an
> > array of Object internally.
> >
> > I was wondering if an UnsafeRow similar to what Spark has implemented
> could
> > be considered for Calcite given the possible savings that it could bring
> in
> > terms of memory and how it could in some cases like mine help avoiding
> > unnecessary boxing / unboxing.
> >
> >
> > https://github.com/apache/spark/blob/master/sql/
> catalyst/src/main/java/org/apache/spark/sql/catalyst/
> expressions/UnsafeRow.java
> >
> > Kind regards,
> >
> > Inigo Mediavilla
> >
> --
>
>
> -- Enrico Olivelli
>

Reply via email to