diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java index 2d99f50338..e46774213b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DynamicValueRegistryTez.java @@ -24,7 +24,7 @@ import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluatorFactory; import org.apache.hadoop.hive.ql.parse.RuntimeValuesInfo; import org.apache.hadoop.hive.ql.plan.BaseWork; -import org.apache.hadoop.hive.ql.plan.DynamicValue.NoDynamicValuesException; +import org.apache.hadoop.hive.common.NoDynamicValuesException; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index fe109d7b96..83e7cd3bec 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -18,7 +18,7 @@ package org.apache.hadoop.hive.ql.io.orc; -import org.apache.hadoop.hive.ql.plan.DynamicValue.NoDynamicValuesException; +import org.apache.hadoop.hive.common.NoDynamicValuesException; import org.apache.hadoop.fs.PathFilter; import org.apache.hadoop.hdfs.DistributedFileSystem; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicValue.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicValue.java index 1f31adef38..04129a6ada 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicValue.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicValue.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.plan; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.common.NoDynamicValuesException; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.exec.DynamicValueRegistry; import org.apache.hadoop.hive.ql.exec.ObjectCache; @@ -101,16 +102,6 @@ public Object getWritableValue() { return objectInspector.getPrimitiveWritableObject(getValue()); } - /** - * An exception that indicates that the dynamic values are (intentionally) - * not available in this context. - */ - public static class NoDynamicValuesException extends RuntimeException { - public NoDynamicValuesException(String message) { - super(message); - } - } - public Object getValue() { if (initialized) { return val; diff --git a/storage-api/src/java/org/apache/hadoop/hive/common/NoDynamicValuesException.java b/storage-api/src/java/org/apache/hadoop/hive/common/NoDynamicValuesException.java new file mode 100644 index 0000000000..a90d3f3ad2 --- /dev/null +++ b/storage-api/src/java/org/apache/hadoop/hive/common/NoDynamicValuesException.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.common; + +/** + * An exception that indicates that the dynamic values are + * not available in this context. + */ +public class NoDynamicValuesException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public NoDynamicValuesException(String message) { + super(message); + } +} diff --git a/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java b/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java index aa4b648a82..e720ad109a 100644 --- a/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java +++ b/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java @@ -32,12 +32,18 @@ import java.util.Set; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.common.NoDynamicValuesException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * The implementation of SearchArguments. Visible for testing only. */ public final class SearchArgumentImpl implements SearchArgument { + private static final Logger LOG = LoggerFactory.getLogger(SearchArgumentImpl.class); + public static final class PredicateLeafImpl implements PredicateLeaf { private final Operator operator; private final Type type; @@ -116,11 +122,16 @@ public Object getLiteral() { public List getLiteralList() { if (literalList != null && literalList.size() > 0 && literalList.get(0) instanceof LiteralDelegate) { List newLiteraList = new ArrayList(); - for (Object litertalObj : literalList) { - Object literal = ((LiteralDelegate) litertalObj).getLiteral(); - if (literal != null) { - newLiteraList.add(literal); + try { + for (Object litertalObj : literalList) { + Object literal = ((LiteralDelegate) litertalObj).getLiteral(); + if (literal != null) { + newLiteraList.add(literal); + } } + } catch (NoDynamicValuesException err) { + LOG.debug("Error while retrieving literalList, returning null", err); + return null; } return newLiteraList; }