[ 
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}
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}

  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:

Column 1                                 |  column 2              | Column 3 | 
Column4
{"a": "b", "c": "d", "e": ["f": "g"]}    [ some stuff here]        abcde     aaa

When I used single fields in select it worked but when I do select * it would 
not.

select * from default.table where column1.a='b' and column3='abcde' and 
Column4='aaa'
The above query failed.

select count(column4) from default.table where column1.a='b' and 
column3='abcde' and Column4='aaa'
The above query works.


> 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}
> 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}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to