Review Board 1.7.22

HIVE-4878: With Dynamic partitioning, some queries would scan default partition even if query is not using it.

Review Request #12705 - Created July 17, 2013 and updated

John Pullokkaran
With Dynamic partitioning, Hive would scan default partitions in some cases even if query excludes it. As part of partition pruning, predicate is narrowed down to those pieces that involve partition columns only. This predicate is then evaluated with partition values to determine, if scan should include those partitions.
But in some cases (like when comparing "_HIVE_DEFAULT_PARTITION_" to numeric data types) expression evaluation would fail and would return NULL instead of true/false. In such cases the partition is added to unknown partitions which is then subsequently scanned.

This fix avoids scanning default partition if all of the following is true:
a) Hive dynamic partition mode is strict (hive.exec.dynamic.partition.mode=strict).
b) partition pruning expression failed to evaluate for a given partition.
c) at the least one of the columns in the partition is default partition.
Hive Unit Tests Passed.
Review request changed
Updated (July 24, 2013, 8:15 p.m.)
As suggested, new patch discards default partition regardless of the mode.