Search in sources :

Example 1 with NoDynamicValuesException

use of org.apache.hadoop.hive.ql.plan.DynamicValue.NoDynamicValuesException in project hive by apache.

the class OrcInputFormat method isStripeSatisfyPredicate.

private static boolean isStripeSatisfyPredicate(StripeStatistics stripeStatistics, SearchArgument sarg, int[] filterColumns, final SchemaEvolution evolution) {
    List<PredicateLeaf> predLeaves = sarg.getLeaves();
    TruthValue[] truthValues = new TruthValue[predLeaves.size()];
    for (int pred = 0; pred < truthValues.length; pred++) {
        if (filterColumns[pred] != -1) {
            if (evolution != null && !evolution.isPPDSafeConversion(filterColumns[pred])) {
                truthValues[pred] = TruthValue.YES_NO_NULL;
            } else {
                // column statistics at index 0 contains only the number of rows
                ColumnStatistics stats = stripeStatistics.getColumnStatistics()[filterColumns[pred]];
                PredicateLeaf leaf = predLeaves.get(pred);
                try {
                    truthValues[pred] = RecordReaderImpl.evaluatePredicate(stats, leaf, null);
                } catch (NoDynamicValuesException dve) {
                    LOG.debug("Dynamic values are not available here {}", dve.getMessage());
                    boolean hasNulls = stats.hasNull() || leaf.getOperator() != Operator.NULL_SAFE_EQUALS;
                    truthValues[pred] = hasNulls ? TruthValue.YES_NO_NULL : TruthValue.YES_NO;
                }
            }
        } else {
            // parition column case.
            // partition filter will be evaluated by partition pruner so
            // we will not evaluate partition filter here.
            truthValues[pred] = TruthValue.YES_NO_NULL;
        }
    }
    return sarg.evaluate(truthValues).isNeeded();
}
Also used : ColumnStatistics(org.apache.orc.ColumnStatistics) PredicateLeaf(org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf) TruthValue(org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue) NoDynamicValuesException(org.apache.hadoop.hive.ql.plan.DynamicValue.NoDynamicValuesException)

Aggregations

PredicateLeaf (org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf)1 TruthValue (org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue)1 NoDynamicValuesException (org.apache.hadoop.hive.ql.plan.DynamicValue.NoDynamicValuesException)1 ColumnStatistics (org.apache.orc.ColumnStatistics)1