-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/489/
-----------------------------------------------------------

(Updated 2011-03-16 16:50:15.347839)


Review request for hive.


Changes
-------

Add more changes to suite the current implementation of JDO filtering. Some 
major changes are:

  - ExpressionTree.makeFilterForEquals(): previous '=' are translated to JDO 
method matches(). This will introduce false positives if the partition value 
contains regex special characters (e.g., dot). I changed this function to use 
startWith(), endsWith(), and indexOf() in the case of whether the partition 
column is at the beginning, end or middle of the partition spec string. Two 
unit tests files (ppr_pushdown*.q) are added to test these cases. 
  - ObjectStore.listMPartitions(): added a query.setOrder() to return 
partitions ordered by their partition names. This is to be backward compatible 
with the old partition pruning behavior. 
  - PartitionPruner.prune(): check if the partition pruning expression contains 
non-partition columns. If so add the resulting partitions to unkn_parts, 
otherwise to true_parts. This is required by down stream optimizations. 
  - Utilities.checkJDOPushDown(): return true only if the partition column type 
is string and constant type is string. This is required by the current 
implementation of JDO filter (see ExpressionTree.java and Filter.g). 

Passed all unit tests. 


Summary
-------

    *  expose HiveMetaStoreClient.listPartitionsByFilter() to Hive.java so that 
PartitionPruner can use that for certain partition predicates.
    * only allows {=, AND, OR} in the partition predicates that can be pushed 
down to JDO filtering.


Diffs (updated)
-----

  
trunk/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java 
1081948 
  trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java 
1081948 
  
trunk/metastore/src/java/org/apache/hadoop/hive/metastore/parser/ExpressionTree.java
 1081948 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java 1081948 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java 1081948 
  
trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java 
1081948 
  trunk/ql/src/test/queries/clientpositive/ppr_pushdown.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/ppr_pushdown2.q PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/ppr_pushdown.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/ppr_pushdown2.q.out PRE-CREATION 

Diff: https://reviews.apache.org/r/489/diff


Testing
-------


Thanks,

Ning

Reply via email to