[
https://issues.apache.org/jira/browse/HIVE-5623?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Damien Carol updated HIVE-5623:
-------------------------------
Description:
In our ORC tests we saw that queries that work on RCFile failed on the
corresponding ORC version with Java IndexOutOfBoundsException in
OrcStruct.java. The queries failed b/c the table has an array type column and
there are rows with an empty array. We noticed that the getList(Object list,
int i) method in OrcStruct.java simply returns the i-th element from list
without checking if list is not null or if i is within valid range. After
fixing that the queries run fine. The fix is really simple, but maybe there are
other similar cases that need to be handled.
The fix is to check if listObj is null and if i falls within range:
{code}
public Object getListElement(Object listObj, int i) {
if (listObj == null) {
return null;
}
List list = ((List) listObj);
if (i < 0 || i >= list.size()) {
return null;
}
return list.get(i);
}
{code}
was:
In our ORC tests we saw that queries that work on RCFile failed on the
corresponding ORC version with Java IndexOutOfBoundsException in
OrcStruct.java. The queries failed b/c the table has an array type column and
there are rows with an empty array. We noticed that the getList(Object list,
int i) method in OrcStruct.java simply returns the i-th element from list
without checking if list is not null or if i is within valid range. After
fixing that the queries run fine. The fix is really simple, but maybe there are
other similar cases that need to be handled.
The fix is to check if listObj is null and if i falls within range:
public Object getListElement(Object listObj, int i) {
if (listObj == null) {
return null;
}
List list = ((List) listObj);
if (i < 0 || i >= list.size()) {
return null;
}
return list.get(i);
}
> ORC accessing array column that's empty will fail with java out of bound
> exception
> ----------------------------------------------------------------------------------
>
> Key: HIVE-5623
> URL: https://issues.apache.org/jira/browse/HIVE-5623
> Project: Hive
> Issue Type: Bug
> Components: File Formats
> Affects Versions: 0.11.0
> Reporter: Eric Chu
> Assignee: Prasanth Jayachandran
> Priority: Critical
> Labels: orcfile
> Fix For: 0.13, 2.0.0
>
> Attachments: HIVE-5623.patch
>
>
> In our ORC tests we saw that queries that work on RCFile failed on the
> corresponding ORC version with Java IndexOutOfBoundsException in
> OrcStruct.java. The queries failed b/c the table has an array type column and
> there are rows with an empty array. We noticed that the getList(Object list,
> int i) method in OrcStruct.java simply returns the i-th element from list
> without checking if list is not null or if i is within valid range. After
> fixing that the queries run fine. The fix is really simple, but maybe there
> are other similar cases that need to be handled.
> The fix is to check if listObj is null and if i falls within range:
> {code}
> public Object getListElement(Object listObj, int i) {
> if (listObj == null) {
> return null;
> }
> List list = ((List) listObj);
> if (i < 0 || i >= list.size()) {
> return null;
> }
> return list.get(i);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)