You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Vova Vysotskyi (Jira)" <ji...@apache.org> on 2020/03/23 09:31:00 UTC

[jira] [Assigned] (DRILL-5521) IndexOutOfBoundsException during union all for map types

     [ https://issues.apache.org/jira/browse/DRILL-5521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vova Vysotskyi reassigned DRILL-5521:
-------------------------------------

    Assignee:     (was: Vova Vysotskyi)

> IndexOutOfBoundsException during union all for map types
> --------------------------------------------------------
>
>                 Key: DRILL-5521
>                 URL: https://issues.apache.org/jira/browse/DRILL-5521
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.11.0
>            Reporter: Arina Ielchiieva
>            Priority: Major
>             Fix For: Future
>
>
> In DRILL-5419 introduced some changes in UnionAllRecordBatch.
> One change allowed to transfer data directly if column name is the same.
> This part of code existed before but was not executed since if condition was always returning false:
> {noformat}
> if(outputFields.get(index).getPath().equals(inputPath)) {
> {noformat}
> But fixing this condition lead to the following error
> Change in code:
> {noformat}
> if (outputFields.get(index).getPath().equals(inputPath.getAsUnescapedPath())) {
> {noformat}
> Data set:
> {noformat}
> cat missing-map.json 
> {"rk": "a", "m": {"a":"1"}}
> {noformat}
> Query:
> {noformat}
> select kvgen(m) from (select m from dfs.`missing-map.json` union all select convert_from('{"a" : null}' ,'json') as m from (values(1)))
> {noformat}
> Error:
> {noformat}
> org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: IndexOutOfBoundsException: index: 0, length: 1 (expected: range(0, 0))
> Fragment 0:0
> [Error Id: 7f95af7b-036b-4f74-820a-c720d527d2e5 on localhost:31010]
>   (java.lang.IndexOutOfBoundsException) index: 0, length: 1 (expected: range(0, 0))
>     io.netty.buffer.DrillBuf.checkIndexD():123
>     io.netty.buffer.DrillBuf.chk():147
>     io.netty.buffer.DrillBuf.getByte():775
>     org.apache.drill.exec.vector.UInt1Vector$Accessor.get():354
>     org.apache.drill.exec.vector.NullableVarCharVector$Accessor.isSet():399
>     org.apache.drill.exec.vector.NullableVarCharVector$Accessor.isNull():395
>     org.apache.drill.exec.vector.complex.impl.NullableVarCharReaderImpl.isSet():100
>     org.apache.drill.exec.expr.fn.impl.MappifyUtility.mappify():59
>     org.apache.drill.exec.test.generated.ProjectorGen2.doEval():38
>     org.apache.drill.exec.test.generated.ProjectorGen2.projectRecords():67
>     org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.doWork():198
>     org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():93
>     org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext():134
>     org.apache.drill.exec.record.AbstractRecordBatch.next():162
>     org.apache.drill.exec.physical.impl.validate.IteratorValidatorBatchIterator.next():215
>     org.apache.drill.exec.record.AbstractRecordBatch.next():119
>     org.apache.drill.exec.record.AbstractRecordBatch.next():109
>     org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():51
>     org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext():134
>     org.apache.drill.exec.record.AbstractRecordBatch.next():162
>     org.apache.drill.exec.physical.impl.validate.IteratorValidatorBatchIterator.next():215
>     org.apache.drill.exec.record.AbstractRecordBatch.next():119
>     org.apache.drill.exec.record.AbstractRecordBatch.next():109
>     org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():51
>     org.apache.drill.exec.physical.impl.flatten.FlattenRecordBatch.innerNext():121
>     org.apache.drill.exec.record.AbstractRecordBatch.next():162
>     org.apache.drill.exec.physical.impl.validate.IteratorValidatorBatchIterator.next():215
>     org.apache.drill.exec.record.AbstractRecordBatch.next():119
>     org.apache.drill.exec.record.AbstractRecordBatch.next():109
>     org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():51
>     org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext():134
>     org.apache.drill.exec.record.AbstractRecordBatch.next():162
>     org.apache.drill.exec.physical.impl.validate.IteratorValidatorBatchIterator.next():215
>     org.apache.drill.exec.physical.impl.BaseRootExec.next():105
>     org.apache.drill.exec.physical.impl.ScreenCreator$ScreenRoot.innerNext():81
>     org.apache.drill.exec.physical.impl.BaseRootExec.next():95
>     org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():234
>     org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():227
>     java.security.AccessController.doPrivileged():-2
>     javax.security.auth.Subject.doAs():421
>     org.apache.hadoop.security.UserGroupInformation.doAs():1657
>     org.apache.drill.exec.work.fragment.FragmentExecutor.run():227
>     org.apache.drill.common.SelfCleaningRunnable.run():38
>     java.util.concurrent.ThreadPoolExecutor.runWorker():1145
>     java.util.concurrent.ThreadPoolExecutor$Worker.run():615
>     java.lang.Thread.run():745
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)