[ https://issues.apache.org/jira/browse/DRILL-4783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15386238#comment-15386238 ]
ASF GitHub Bot commented on DRILL-4783: --------------------------------------- Github user jaltekruse commented on the issue: https://github.com/apache/drill/pull/546 The original behavior was not by design, it was a bug. I would just detect the case where a scalar is being flattened and throw an appropriate user facing message like "Flatten does not support inputs of non-list values". The tests you have included here don't check their results. I would also suggest adding a test for the new negative case, checking for the appropriate message. If you want to more precisely control the input to your test, I would recommend taking a look at the operator unit test system I checked in and demonstrated at the hangout last month. This will allow you to write more targeted tests for this case. Feel free to ask questions if the usage is not clear from the examples in this class. https://github.com/apache/drill/blob/master/exec/java-exec/src/test/java/org/apache/drill/exec/physical/unit/BasicPhysicalOpUnitTest.java > Flatten on CONVERT_FROM fails with ClassCastException if resultset is empty > --------------------------------------------------------------------------- > > Key: DRILL-4783 > URL: https://issues.apache.org/jira/browse/DRILL-4783 > Project: Apache Drill > Issue Type: Bug > Reporter: Chunhui Shi > Assignee: Chunhui Shi > Priority: Critical > > Flatten failed to work on top of convert_from when the resultset is empty. > For a HBase table like this: > 0: jdbc:drill:zk=localhost:5181> select convert_from(t.address.cities,'json') > from hbase.`/tmp/flattentest` t; > +----------------------------------------------------------------------------------+ > | EXPR$0 > | > +----------------------------------------------------------------------------------+ > | {"list":[{"city":"SunnyVale"},{"city":"Palo Alto"},{"city":"Mountain > View"}]} | > | {"list":[{"city":"Seattle"},{"city":"Bellevue"},{"city":"Renton"}]} > | > | {"list":[{"city":"Minneapolis"},{"city":"Falcon Heights"},{"city":"San > Paul"}]} | > +----------------------------------------------------------------------------------+ > Flatten works when row_key is in (1,2,3) > 0: jdbc:drill:zk=localhost:5181> select flatten(t1.json.list) from (select > convert_from(t.address.cities,'json') json from hbase.`/tmp/flattentest` t > where row_key=1) t1; > +---------------------------+ > | EXPR$0 | > +---------------------------+ > | {"city":"SunnyVale"} | > | {"city":"Palo Alto"} | > | {"city":"Mountain View"} | > +---------------------------+ > But Flatten throws exception if the resultset is empty > 0: jdbc:drill:zk=localhost:5181> select flatten(t1.json.list) from (select > convert_from(t.address.cities,'json') json from hbase.`/tmp/flattentest` t > where row_key=4) t1; > Error: SYSTEM ERROR: ClassCastException: Cannot cast > org.apache.drill.exec.vector.NullableIntVector to > org.apache.drill.exec.vector.complex.RepeatedValueVector > Fragment 0:0 > [Error Id: 07fd0cab-d1e6-4259-bfec-ad80f02d93a2 on atsqa4-127.qa.lab:31010] > (state=,code=0) -- This message was sent by Atlassian JIRA (v6.3.4#6332)