[
https://issues.apache.org/jira/browse/HIVE-5860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anuj Ojha updated HIVE-5860:
----------------------------
Description:
I was querying a table with non-array columns and I came across situation where
if I use select * it would throw me index out of bound exception.
{code}
java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: -1
{code}
{code}
java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: -1
at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:150)
at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1403)
at
org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:270)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:755)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at
org.apache.hadoop.hive.serde2.lazy.LazyInteger.parseInt(LazyInteger.java:107)
at
org.apache.hadoop.hive.serde2.lazy.LazyByte.parseByte(LazyByte.java:94)
at
org.apache.hadoop.hive.serde2.lazy.LazyByte.parseByte(LazyByte.java:74)
at
org.apache.hadoop.hive.serde2.lazy.LazyUnion.parse(LazyUnion.java:123)
at
org.apache.hadoop.hive.serde2.lazy.LazyUnion.getTag(LazyUnion.java:178)
at
org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyUnionObjectInspector.getTag(LazyUnionObjectInspector.java:128)
at
org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:367)
at
org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:354)
at
org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:307)
at
org.apache.hadoop.hive.serde2.SerDeUtils.getJSONString(SerDeUtils.java:220)
at
org.apache.hadoop.hive.serde2.DelimitedJSONSerDe.serializeField(DelimitedJSONSerDe.java:59)
at
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:365)
at
org.apache.hadoop.hive.ql.exec.ListSinkOperator.processOp(ListSinkOperator.java:91)
at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474)
at
org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:468)
at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:136)
... 11 more
{code}
Table looked something like this:
{code}
Column 1 | column 2 | Column 3 |
Column4
{"a": "b", "c": "d", "e": ["f": "g"]} [ some stuff here] abcde aaa
{code}
When I used single fields in select it worked but when I do select * it would
not.
{code}
select * from default.table where column1.a='b' and column3='abcde' and
Column4='aaa'
The above query failed.
{code}
{code}
select count(column4) from default.table where column1.a='b' and
column3='abcde' and Column4='aaa'
The above query works.
{code}
was:
I was querying a table with non-array columns and I came across situation where
if I use select * it would throw me index out of bound exception.
{code}
java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: -1
{code}
{code}
13/11/20 10:01:28 ERROR beeswax.BeeswaxServiceImpl: Caught BeeswaxException
BeeswaxException(message:java.io.IOException:
java.lang.ArrayIndexOutOfBoundsException: -1, log_context:key1,
handle:QueryHandle(id:abc, log_context:def), SQLState: )
at
com.cloudera.beeswax.BeeswaxServiceImpl$RunningQueryState.fetch(BeeswaxServiceImpl.java:545)
at
com.cloudera.beeswax.BeeswaxServiceImpl$5.run(BeeswaxServiceImpl.java:986)
at
com.cloudera.beeswax.BeeswaxServiceImpl$5.run(BeeswaxServiceImpl.java:981)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at
com.cloudera.beeswax.BeeswaxServiceImpl.doWithState(BeeswaxServiceImpl.java:772)
at
com.cloudera.beeswax.BeeswaxServiceImpl.fetch(BeeswaxServiceImpl.java:980)
at
com.cloudera.beeswax.api.BeeswaxService$Processor$fetch.getResult(BeeswaxService.java:987)
at
com.cloudera.beeswax.api.BeeswaxService$Processor$fetch.getResult(BeeswaxService.java:971)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:206)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
{code}
Table looked something like this:
{code}
Column 1 | column 2 | Column 3 |
Column4
{"a": "b", "c": "d", "e": ["f": "g"]} [ some stuff here] abcde aaa
{code}
When I used single fields in select it worked but when I do select * it would
not.
{code}
select * from default.table where column1.a='b' and column3='abcde' and
Column4='aaa'
The above query failed.
{code}
{code}
select count(column4) from default.table where column1.a='b' and
column3='abcde' and Column4='aaa'
The above query works.
{code}
> Select * does not work when table has non-array columns.
> --------------------------------------------------------
>
> Key: HIVE-5860
> URL: https://issues.apache.org/jira/browse/HIVE-5860
> Project: Hive
> Issue Type: Bug
> Reporter: Anuj Ojha
>
> I was querying a table with non-array columns and I came across situation
> where if I use select * it would throw me index out of bound exception.
> {code}
> java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: -1
> {code}
> {code}
> java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: -1
> at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:150)
> at org.apache.hadoop.hive.ql.Driver.getResults(Driver.java:1403)
> at
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:270)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
> at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:755)
> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
> at
> org.apache.hadoop.hive.serde2.lazy.LazyInteger.parseInt(LazyInteger.java:107)
> at
> org.apache.hadoop.hive.serde2.lazy.LazyByte.parseByte(LazyByte.java:94)
> at
> org.apache.hadoop.hive.serde2.lazy.LazyByte.parseByte(LazyByte.java:74)
> at
> org.apache.hadoop.hive.serde2.lazy.LazyUnion.parse(LazyUnion.java:123)
> at
> org.apache.hadoop.hive.serde2.lazy.LazyUnion.getTag(LazyUnion.java:178)
> at
> org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyUnionObjectInspector.getTag(LazyUnionObjectInspector.java:128)
> at
> org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:367)
> at
> org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:354)
> at
> org.apache.hadoop.hive.serde2.SerDeUtils.buildJSONString(SerDeUtils.java:307)
> at
> org.apache.hadoop.hive.serde2.SerDeUtils.getJSONString(SerDeUtils.java:220)
> at
> org.apache.hadoop.hive.serde2.DelimitedJSONSerDe.serializeField(DelimitedJSONSerDe.java:59)
> at
> org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.serialize(LazySimpleSerDe.java:365)
> at
> org.apache.hadoop.hive.ql.exec.ListSinkOperator.processOp(ListSinkOperator.java:91)
> at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474)
> at
> org.apache.hadoop.hive.ql.exec.FetchOperator.pushRow(FetchOperator.java:468)
> at org.apache.hadoop.hive.ql.exec.FetchTask.fetch(FetchTask.java:136)
> ... 11 more
> {code}
> Table looked something like this:
> {code}
> Column 1 | column 2 | Column 3
> | Column4
> {"a": "b", "c": "d", "e": ["f": "g"]} [ some stuff here] abcde
> aaa
> {code}
> When I used single fields in select it worked but when I do select * it would
> not.
> {code}
> select * from default.table where column1.a='b' and column3='abcde' and
> Column4='aaa'
> The above query failed.
> {code}
> {code}
> select count(column4) from default.table where column1.a='b' and
> column3='abcde' and Column4='aaa'
> The above query works.
> {code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)