ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Paschenko (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-4333) SQL engine does not preserve metadata about array content's type
Date Tue, 29 Nov 2016 17:22:58 GMT
Alexander Paschenko created IGNITE-4333:

             Summary: SQL engine does not preserve metadata about array content's type
                 Key: IGNITE-4333
                 URL: https://issues.apache.org/jira/browse/IGNITE-4333
             Project: Ignite
          Issue Type: Sub-task
          Components: SQL
    Affects Versions: 1.8
            Reporter: Alexander Paschenko
             Fix For: 2.0

This problem arises on SQL *SELECT* from grid table and on results page transfer over network.

First, when data is *SELECT* ed, {{org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.RowDescriptor#wrap}}
does not look at array's component type and tries to convert any array to {{Object[]}} which
turns to {{ClassCastException}} when array is of primitive type and erases metadata about
its contents when its type is not primitive.

Then, when results page is transferred over network, array is wrapped into {{org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2Array}}
which does not have any metadata too, so, even if we had returned primitive array from native
H2's local *SELECT*, information about its primitiveness would be lost anyway, and it would
be converted to, say, {{java.lang.Byte[]}} after all.

So, currently there's no way to *SELECT* a primitive array field via SQL.

Probably this could be fixed by changing {{GridH2Array}}, but this would break backward compatibility,
so it's an open question for now.

This message was sent by Atlassian JIRA

View raw message