[
https://issues.apache.org/jira/browse/HIVE-11634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14986979#comment-14986979
]
Lefty Leverenz commented on HIVE-11634:
---------------------------------------
Doc notes and questions:
1) I added a TODOC2.0 label even though this has Fix Version 1.3.0, because I
don't see a commit to branch-1 in email. (The commit to master is
b7986a8fbb950e7f76d70d923cf0d9ebee5e8360.) Perhaps a branch-1 commit will come
later.
2) What is HiveConf.java.orig and why does the commit to master add a new
configuration parameter to it
(*hive.vectorized.execution.reducesink.new.enabled*)? Neither the file nor the
parameter appears in HIVE-11634.patch or HIVE-11634.995.patch. HIVE-12290
added HiveConf.java.orig to master seemingly by accident.
3) This removes *hive.optimize.point.lookup.extract* from HiveConf.java and
adds *hive.optimize.partition.columns.separate*, so the wiki needs to be
updated for release 2.0.0 (or 1.3.0 if the patch is going to be committed to
branch-1).
> Support partition pruning for IN(STRUCT(partcol, nonpartcol..)...)
> ------------------------------------------------------------------
>
> Key: HIVE-11634
> URL: https://issues.apache.org/jira/browse/HIVE-11634
> Project: Hive
> Issue Type: Bug
> Components: CBO
> Reporter: Hari Sankar Sivarama Subramaniyan
> Assignee: Hari Sankar Sivarama Subramaniyan
> Labels: TODOC2.0
> Fix For: 1.3.0
>
> Attachments: HIVE-11634.1.patch, HIVE-11634.2.patch,
> HIVE-11634.3.patch, HIVE-11634.4.patch, HIVE-11634.5.patch,
> HIVE-11634.6.patch, HIVE-11634.7.patch, HIVE-11634.8.patch,
> HIVE-11634.9.patch, HIVE-11634.91.patch, HIVE-11634.92.patch,
> HIVE-11634.93.patch, HIVE-11634.94.patch, HIVE-11634.95.patch,
> HIVE-11634.96.patch, HIVE-11634.97.patch, HIVE-11634.98.patch,
> HIVE-11634.99.patch, HIVE-11634.990.patch, HIVE-11634.991.patch,
> HIVE-11634.992.patch, HIVE-11634.993.patch, HIVE-11634.994.patch,
> HIVE-11634.995.patch, HIVE-11634.patch
>
>
> Currently, we do not support partition pruning for the following scenario
> {code}
> create table pcr_t1 (key int, value string) partitioned by (ds string);
> insert overwrite table pcr_t1 partition (ds='2000-04-08') select * from src
> where key < 20 order by key;
> insert overwrite table pcr_t1 partition (ds='2000-04-09') select * from src
> where key < 20 order by key;
> insert overwrite table pcr_t1 partition (ds='2000-04-10') select * from src
> where key < 20 order by key;
> explain extended select ds from pcr_t1 where struct(ds, key) in
> (struct('2000-04-08',1), struct('2000-04-09',2));
> {code}
> If we run the above query, we see that all the partitions of table pcr_t1 are
> present in the filter predicate where as we can prune partition
> (ds='2000-04-10').
> The optimization is to rewrite the above query into the following.
> {code}
> explain extended select ds from pcr_t1 where (struct(ds)) IN
> (struct('2000-04-08'), struct('2000-04-09')) and struct(ds, key) in
> (struct('2000-04-08',1), struct('2000-04-09',2));
> {code}
> The predicate (struct(ds)) IN (struct('2000-04-08'), struct('2000-04-09'))
> is used by partition pruner to prune the columns which otherwise will not be
> pruned.
> This is an extension of the idea presented in HIVE-11573.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)