You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Eric Chu (JIRA)" <ji...@apache.org> on 2013/12/05 23:52:35 UTC
[jira] [Updated] (HIVE-5623) ORC accessing array column that's
empty will fail with java out of bound exception
[ https://issues.apache.org/jira/browse/HIVE-5623?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Chu updated HIVE-5623:
---------------------------
Labels: orcfile (was: )
> 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
> Priority: Critical
> Labels: orcfile
>
> 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);
> }
--
This message was sent by Atlassian JIRA
(v6.1#6144)