Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java (revision 1465536) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java (working copy) @@ -54,6 +54,7 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDF; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPOr; +import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.thrift.TException; @@ -264,6 +265,9 @@ return children.get(1); } else if (children.get(1) == null) { return children.get(0); + } else if (children.get(0).getTypeString().equals(serdeConstants.STRING_TYPE_NAME) && + children.get(1).getTypeString().equals(serdeConstants.STRING_TYPE_NAME)) { + return null; } } return expr; Index: ql/src/test/queries/clientpositive/const_filter.q =================================================================== --- ql/src/test/queries/clientpositive/const_filter.q (revision 0) +++ ql/src/test/queries/clientpositive/const_filter.q (revision 0) @@ -0,0 +1,23 @@ +-- test view +drop view if exists v_test_table; +create view if not exists v_test_table ( key, type, ds) as +select key ,type, ds from +( select key , 'apple' as type , ds +from srcpart +where ds='2008-12-31' +) t; + +explain select * from v_test_table where type='orange'; +select * from v_test_table where type='orange'; + +explain select * from srcpart where 1=2; +select * from srcpart where 1=2; + +explain select * from srcpart where 'test'='test1'; +select * from srcpart where 'test'='test1'; +select * from srcpart where 'test'='test'; + +explain select * from srcpart where 'test'='test1' and ds='2008-12-31'; +select * from srcpart where 'test'='test1' and ds='2008-12-31'; +select * from srcpart where 'test'='test' and ds='2008-12-31' and key=400; +