You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Hengyu Dai (JIRA)" <ji...@apache.org> on 2018/01/06 12:19:00 UTC
[jira] [Updated] (HIVE-18390) IndexOutOfBoundsException when query
a partitioned view in ColumnPruner
[ https://issues.apache.org/jira/browse/HIVE-18390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hengyu Dai updated HIVE-18390:
------------------------------
Attachment: HIVE-18390.patch
> IndexOutOfBoundsException when query a partitioned view in ColumnPruner
> -------------------------------------------------------------------------
>
> Key: HIVE-18390
> URL: https://issues.apache.org/jira/browse/HIVE-18390
> Project: Hive
> Issue Type: Bug
> Components: Query Planning, Views
> Affects Versions: 2.1.1
> Reporter: Hengyu Dai
> Attachments: HIVE-18390.patch
>
>
> IndexOutOfBoundsException is encountered when query a partitioned view.
> in Column Prunning, each SEL operator collects the accessed column in current SEL operator,
> When ColumnPrunerSelectProc getting a view's columns accessed, it will first get the index of output column names in the view, then call Table.getCols().get(index).getName() to finally get the
> name of output column, but Table.getCols() will not return all columns (partitioned column is
> lacked), so if partitioned columns is queried, an IndexOutOfBoundsException will throw.
> REPRODUCE:
> {code:sql}
> create table foo
> (
> `a` string
> ) partitioned by (`b` string)
> ;
> create view bar partitioned on (b) as
> select a,b from foo;
> select * from bar; --IndexOutOfBoundsException
> {code}
> OPERATORE TREE:
> {code:java}
> TS[0]
> |
> SEL[1]
> |
> SEL[2]
> |
> FS[3]
> {code}
> SEL[1] collects accessed column(contains partitioned column b), b's internal column name is '_col1', the corresponding column index is 1, but actually bar's getCols() returned a list of length 1: ['a'], so tab.getCols().get(1) throw tab.getCols().get(index)
> HOW TO FIX:
> instead of call view's getCols() method, we should get all columns including partitioned columns
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)