Repository: hive
Updated Branches:
  refs/heads/master cd715e7f4 -> c8b3f9aa0


HIVE-20520: length(CHAR) doesn't consider trailing space (Jesus Camacho 
Rodriguez, reviewed by Ashutosh Chauhan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c8b3f9aa
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c8b3f9aa
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c8b3f9aa

Branch: refs/heads/master
Commit: c8b3f9aa08be15546844ef6d5be6871b6d5a76db
Parents: cd715e7
Author: Jesus Camacho Rodriguez <[email protected]>
Authored: Fri Sep 7 16:01:52 2018 -0700
Committer: Jesus Camacho Rodriguez <[email protected]>
Committed: Tue Sep 11 09:40:45 2018 -0700

----------------------------------------------------------------------
 .../test/resources/testconfiguration.properties |  1 +
 .../ql/exec/vector/expressions/OctetLength.java | 20 +++++---
 .../exec/vector/expressions/StringLength.java   | 21 +++++---
 .../udf/generic/GenericUDFCharacterLength.java  |  9 ++++
 .../hive/ql/udf/generic/GenericUDFLength.java   |  9 ++++
 .../ql/udf/generic/GenericUDFOctetLength.java   |  9 ++++
 .../TestVectorStringExpressions.java            |  8 ++-
 .../clientpositive/char_trailing_space.q        |  8 +++
 .../results/clientpositive/alter_char2.q.out    |  8 +--
 .../test/results/clientpositive/char_udf1.q.out |  2 +-
 .../llap/char_trailing_space.q.out              | 53 ++++++++++++++++++++
 .../clientpositive/llap/parquet_types.q.out     |  8 +--
 .../llap/vector_char_varchar_1.q.out            |  2 +-
 .../llap/vectorized_parquet_types.q.out         | 16 +++---
 .../vectorized_parquet_types.q.out              | 16 +++---
 15 files changed, 151 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties 
b/itests/src/test/resources/testconfiguration.properties
index 3a5aec7..146f630 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -469,6 +469,7 @@ minillaplocal.query.files=\
   runtime_stats_hs2.q,\
   bucketsortoptimize_insert_2.q,\
   change_allowincompatible_vectorization_false_date.q,\
+  char_trailing_space.q,\
   check_constraint.q,\
   cbo_gby.q,\
   cbo_join.q,\

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/OctetLength.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/OctetLength.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/OctetLength.java
index ebea38d..59583c5 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/OctetLength.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/OctetLength.java
@@ -25,6 +25,10 @@ import 
org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
+import 
org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 
 public class OctetLength extends VectorExpression {
   private static final long serialVersionUID = 1L;
@@ -65,6 +69,10 @@ public class OctetLength extends VectorExpression {
       return;
     }
 
+    boolean isFixedLength = inputTypeInfos[0].getCategory() == 
Category.PRIMITIVE &&
+        ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory() == 
PrimitiveCategory.CHAR;
+    int fixedLength = isFixedLength ? ((CharTypeInfo) 
inputTypeInfos[0]).getLength() : -1;
+
     // We do not need to do a column reset since we are carefully changing the 
output.
     outputColVector.isRepeating = false;
 
@@ -72,7 +80,7 @@ public class OctetLength extends VectorExpression {
       if (inputColVector.noNulls || !inputIsNull[0]) {
         // Set isNull before call in case it changes it mind.
         outputIsNull[0] = false;
-        resultLen[0] = length[0];
+        resultLen[0] = isFixedLength ? fixedLength : length[0];
       } else {
         outputIsNull[0] = true;
         outputColVector.noNulls = false;
@@ -95,12 +103,12 @@ public class OctetLength extends VectorExpression {
            final int i = sel[j];
            // Set isNull before call in case it changes it mind.
            outputIsNull[i] = false;
-           resultLen[i] = length[i];
+           resultLen[i] = isFixedLength ? fixedLength : length[i];
          }
         } else {
           for(int j = 0; j != n; j++) {
             final int i = sel[j];
-            resultLen[i] = length[i];
+            resultLen[i] = isFixedLength ? fixedLength : length[i];
           }
         }
       } else {
@@ -112,7 +120,7 @@ public class OctetLength extends VectorExpression {
           outputColVector.noNulls = true;
         }
         for(int i = 0; i != n; i++) {
-          resultLen[i] = length[i];
+          resultLen[i] = isFixedLength ? fixedLength : length[i];
         }
       }
     } else {
@@ -128,14 +136,14 @@ public class OctetLength extends VectorExpression {
           int i = sel[j];
           outputIsNull[i] = inputIsNull[i];
           if (!inputIsNull[i]) {
-            resultLen[i] = length[i];
+            resultLen[i] = isFixedLength ? fixedLength : length[i];
           }
         }
       } else {
         System.arraycopy(inputIsNull, 0, outputIsNull, 0, n);
         for(int i = 0; i != n; i++) {
           if (!inputIsNull[i]) {
-            resultLen[i] = length[i];
+            resultLen[i] = isFixedLength ? fixedLength : length[i];
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
index 956fd7b..ea33843 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringLength.java
@@ -25,6 +25,11 @@ import 
org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
+import 
org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 
 /**
  * Calculate the length of the strings in the input column vector, and store
@@ -71,6 +76,10 @@ public class StringLength extends VectorExpression {
       return;
     }
 
+    boolean isFixedLength = inputTypeInfos[0].getCategory() == 
Category.PRIMITIVE &&
+        ((PrimitiveTypeInfo) inputTypeInfos[0]).getPrimitiveCategory() == 
PrimitiveCategory.CHAR;
+    int fixedLength = isFixedLength ? ((CharTypeInfo) 
inputTypeInfos[0]).getLength() : -1;
+
     // We do not need to do a column reset since we are carefully changing the 
output.
     outputColVector.isRepeating = false;
 
@@ -78,7 +87,7 @@ public class StringLength extends VectorExpression {
       if (inputColVector.noNulls || !inputIsNull[0]) {
         // Set isNull before call in case it changes it mind.
         outputIsNull[0] = false;
-        resultLen[0] = utf8StringLength(vector[0], start[0], length[0]);
+        resultLen[0] = isFixedLength ? fixedLength : 
utf8StringLength(vector[0], start[0], length[0]);
       } else {
         outputIsNull[0] = true;
         outputColVector.noNulls = false;
@@ -97,12 +106,12 @@ public class StringLength extends VectorExpression {
            final int i = sel[j];
            // Set isNull before call in case it changes it mind.
            outputIsNull[i] = false;
-           resultLen[i] = utf8StringLength(vector[i], start[i], length[i]);
+           resultLen[i] = isFixedLength ? fixedLength : 
utf8StringLength(vector[i], start[i], length[i]);
          }
         } else {
           for(int j = 0; j != n; j++) {
             final int i = sel[j];
-            resultLen[i] = utf8StringLength(vector[i], start[i], length[i]);
+            resultLen[i] = isFixedLength ? fixedLength : 
utf8StringLength(vector[i], start[i], length[i]);
           }
         }
       } else {
@@ -114,7 +123,7 @@ public class StringLength extends VectorExpression {
           outputColVector.noNulls = true;
         }
         for(int i = 0; i != n; i++) {
-          resultLen[i] = utf8StringLength(vector[i], start[i], length[i]);
+          resultLen[i] = isFixedLength ? fixedLength : 
utf8StringLength(vector[i], start[i], length[i]);
         }
       }
     } else /* there are nulls in the inputColVector */ {
@@ -127,7 +136,7 @@ public class StringLength extends VectorExpression {
           int i = sel[j];
           outputColVector.isNull[i] = inputColVector.isNull[i];
           if (!inputColVector.isNull[i]) {
-            resultLen[i] = utf8StringLength(vector[i], start[i], length[i]);
+            resultLen[i] = isFixedLength ? fixedLength : 
utf8StringLength(vector[i], start[i], length[i]);
           }
         }
         outputColVector.isRepeating = false;
@@ -135,7 +144,7 @@ public class StringLength extends VectorExpression {
         for(int i = 0; i != n; i++) {
           outputColVector.isNull[i] = inputColVector.isNull[i];
           if (!inputColVector.isNull[i]) {
-            resultLen[i] = utf8StringLength(vector[i], start[i], length[i]);
+            resultLen[i] = isFixedLength ? fixedLength : 
utf8StringLength(vector[i], start[i], length[i]);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCharacterLength.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCharacterLength.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCharacterLength.java
index ce6cd30..30c40d3 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCharacterLength.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCharacterLength.java
@@ -27,6 +27,7 @@ import 
org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.IntWritable;
 
@@ -40,6 +41,7 @@ public class GenericUDFCharacterLength extends GenericUDF {
   private transient PrimitiveObjectInspector argumentOI;
   private transient PrimitiveObjectInspectorConverter.StringConverter 
stringConverter;
   private transient boolean isInputString;
+  private transient boolean isInputFixedLength;
 
   @Override
   public ObjectInspector initialize(ObjectInspector[] arguments) throws 
UDFArgumentException {
@@ -59,6 +61,8 @@ public class GenericUDFCharacterLength extends GenericUDF {
     ObjectInspector outputOI = null;
     switch (inputType) {
       case CHAR:
+        isInputFixedLength = true;
+        result.set(((CharTypeInfo) argumentOI.getTypeInfo()).getLength());
       case VARCHAR:
       case STRING:
         isInputString = true;
@@ -90,6 +94,11 @@ public class GenericUDFCharacterLength extends GenericUDF {
         return null;
       }
 
+      // For char, we do not need to explore the data
+      if (isInputFixedLength) {
+        return result;
+      }
+
       data = val.getBytes();
     } else {
       BytesWritable val = null;

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLength.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLength.java 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLength.java
index f4ac350..f9ca15d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLength.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLength.java
@@ -28,6 +28,7 @@ import 
org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.IntWritable;
 
@@ -46,6 +47,7 @@ public class GenericUDFLength extends GenericUDF {
   private transient PrimitiveObjectInspectorConverter.StringConverter 
stringConverter;
   private transient PrimitiveObjectInspectorConverter.BinaryConverter 
binaryConverter;
   private transient boolean isInputString;
+  private transient boolean isInputFixedLength;
 
   @Override
   public ObjectInspector initialize(ObjectInspector[] arguments) throws 
UDFArgumentException {
@@ -64,6 +66,8 @@ public class GenericUDFLength extends GenericUDF {
     ObjectInspector outputOI = null;
     switch (inputType) {
       case CHAR:
+        isInputFixedLength = true;
+        result.set(((CharTypeInfo) argumentOI.getTypeInfo()).getLength());
       case VARCHAR:
       case STRING:
         isInputString = true;
@@ -98,6 +102,11 @@ public class GenericUDFLength extends GenericUDF {
         return null;
       }
 
+      // For char, we do not need to explore the data
+      if (isInputFixedLength) {
+        return result;
+      }
+
       data = val.getBytes();
 
       int len = 0;

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOctetLength.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOctetLength.java 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOctetLength.java
index 825066f..2a39ebb 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOctetLength.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOctetLength.java
@@ -27,6 +27,7 @@ import 
org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.IntWritable;
 
@@ -40,6 +41,7 @@ public class GenericUDFOctetLength extends GenericUDF {
   private transient PrimitiveObjectInspector argumentOI;
   private transient PrimitiveObjectInspectorConverter.StringConverter 
stringConverter;
   private transient boolean isInputString;
+  private transient boolean isInputFixedLength;
 
   @Override
   public ObjectInspector initialize(ObjectInspector[] arguments) throws 
UDFArgumentException {
@@ -59,6 +61,8 @@ public class GenericUDFOctetLength extends GenericUDF {
     ObjectInspector outputOI = null;
     switch (inputType) {
       case CHAR:
+        isInputFixedLength = true;
+        result.set(((CharTypeInfo) argumentOI.getTypeInfo()).getLength());
       case VARCHAR:
       case STRING:
         isInputString = true;
@@ -90,6 +94,11 @@ public class GenericUDFOctetLength extends GenericUDF {
         return null;
       }
 
+      // For char, we do not need to explore the data
+      if (isInputFixedLength) {
+        return result;
+      }
+
       data = val.getBytes();
     } else {
       BytesWritable val = null;

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
----------------------------------------------------------------------
diff --git 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
index 902f29e..8a521f9 100644
--- 
a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
+++ 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
@@ -63,6 +63,9 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.gen.VarCharScalarEqualS
 import org.apache.hadoop.hive.ql.exec.vector.util.VectorizedRowGroupGenUtil;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.udf.UDFLike;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.Text;
 import org.junit.Test;
@@ -4138,9 +4141,12 @@ public class TestVectorStringExpressions {
   @Test
   public void testStringLength() throws HiveException {
 
+    StringLength expr = new StringLength(0, 1);
+    expr.inputTypeInfos = new TypeInfo[1];
+    expr.inputTypeInfos[0] = TypeInfoFactory.stringTypeInfo;
+
     // has nulls, not repeating
     VectorizedRowBatch batch = makeStringBatchMixedCharSize();
-    StringLength expr = new StringLength(0, 1);
     expr.evaluate(batch);
     LongColumnVector outCol = (LongColumnVector) batch.cols[1];
     Assert.assertEquals(5, outCol.vector[1]); // length of green is 5

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/queries/clientpositive/char_trailing_space.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/char_trailing_space.q 
b/ql/src/test/queries/clientpositive/char_trailing_space.q
new file mode 100644
index 0000000..a8fb6d0
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/char_trailing_space.q
@@ -0,0 +1,8 @@
+create table char_trailing_space(a char(2), b varchar(2));
+insert into char_trailing_space values('L ', 'L ');
+
+select length(a),length(b) from char_trailing_space;
+select character_length(a),character_length(b) from char_trailing_space;
+select octet_length(a),octet_length(b) from char_trailing_space;
+
+drop table char_trailing_space;

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/alter_char2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/alter_char2.q.out 
b/ql/src/test/results/clientpositive/alter_char2.q.out
index 2084477..76d7234 100644
--- a/ql/src/test/results/clientpositive/alter_char2.q.out
+++ b/ql/src/test/results/clientpositive/alter_char2.q.out
@@ -35,7 +35,7 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alter_char2
 POSTHOOK: Input: default@alter_char2@hr=1
 #### A masked pattern was here ####
-val_238                                                                        
                                                                                
                                                                                
                        7
+val_238                                                                        
                                                                                
                                                                                
                        255
 PREHOOK: query: alter table alter_char2 change column c1 c1 char(10)
 PREHOOK: type: ALTERTABLE_RENAMECOL
 PREHOOK: Input: default@alter_char2
@@ -54,7 +54,7 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alter_char2
 POSTHOOK: Input: default@alter_char2@hr=1
 #### A masked pattern was here ####
-1      val_238         7
+1      val_238         10
 PREHOOK: query: insert overwrite table alter_char2 partition (hr=2)
   select key from src limit 1
 PREHOOK: type: QUERY
@@ -76,7 +76,7 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alter_char2
 POSTHOOK: Input: default@alter_char2@hr=1
 #### A masked pattern was here ####
-1      val_238         7
+1      val_238         10
 PREHOOK: query: select hr, c1, length(c1) from alter_char2 where hr = 2
 PREHOOK: type: QUERY
 PREHOOK: Input: default@alter_char2
@@ -87,4 +87,4 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alter_char2
 POSTHOOK: Input: default@alter_char2@hr=2
 #### A masked pattern was here ####
-2      238             3
+2      238             10

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/char_udf1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/char_udf1.q.out 
b/ql/src/test/results/clientpositive/char_udf1.q.out
index 09fb697..f5d1acf 100644
--- a/ql/src/test/results/clientpositive/char_udf1.q.out
+++ b/ql/src/test/results/clientpositive/char_udf1.q.out
@@ -159,7 +159,7 @@ from char_udf_1 limit 1
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@char_udf_1
 #### A masked pattern was here ####
-7      7       true
+7      20      false
 PREHOOK: query: select
   locate('a', 'abcdabcd', 3),
   locate(cast('a' as char(1)), cast('abcdabcd' as char(10)), 3),

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/llap/char_trailing_space.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/char_trailing_space.q.out 
b/ql/src/test/results/clientpositive/llap/char_trailing_space.q.out
new file mode 100644
index 0000000..cea90f7
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/char_trailing_space.q.out
@@ -0,0 +1,53 @@
+PREHOOK: query: create table char_trailing_space(a char(2), b varchar(2))
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@char_trailing_space
+POSTHOOK: query: create table char_trailing_space(a char(2), b varchar(2))
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@char_trailing_space
+PREHOOK: query: insert into char_trailing_space values('L ', 'L ')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@char_trailing_space
+POSTHOOK: query: insert into char_trailing_space values('L ', 'L ')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@char_trailing_space
+POSTHOOK: Lineage: char_trailing_space.a SCRIPT []
+POSTHOOK: Lineage: char_trailing_space.b SCRIPT []
+PREHOOK: query: select length(a),length(b) from char_trailing_space
+PREHOOK: type: QUERY
+PREHOOK: Input: default@char_trailing_space
+#### A masked pattern was here ####
+POSTHOOK: query: select length(a),length(b) from char_trailing_space
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@char_trailing_space
+#### A masked pattern was here ####
+2      2
+PREHOOK: query: select character_length(a),character_length(b) from 
char_trailing_space
+PREHOOK: type: QUERY
+PREHOOK: Input: default@char_trailing_space
+#### A masked pattern was here ####
+POSTHOOK: query: select character_length(a),character_length(b) from 
char_trailing_space
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@char_trailing_space
+#### A masked pattern was here ####
+2      2
+PREHOOK: query: select octet_length(a),octet_length(b) from char_trailing_space
+PREHOOK: type: QUERY
+PREHOOK: Input: default@char_trailing_space
+#### A masked pattern was here ####
+POSTHOOK: query: select octet_length(a),octet_length(b) from 
char_trailing_space
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@char_trailing_space
+#### A masked pattern was here ####
+2      2
+PREHOOK: query: drop table char_trailing_space
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@char_trailing_space
+PREHOOK: Output: default@char_trailing_space
+POSTHOOK: query: drop table char_trailing_space
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@char_trailing_space
+POSTHOOK: Output: default@char_trailing_space

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/llap/parquet_types.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/parquet_types.q.out 
b/ql/src/test/results/clientpositive/llap/parquet_types.q.out
index 508ac16..9678bb4 100644
--- a/ql/src/test/results/clientpositive/llap/parquet_types.q.out
+++ b/ql/src/test/results/clientpositive/llap/parquet_types.q.out
@@ -192,10 +192,10 @@ POSTHOOK: query: SELECT cchar, LENGTH(cchar), cvarchar, 
LENGTH(cvarchar) FROM pa
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@parquet_types
 #### A masked pattern was here ####
-a      1       a       3
-ab     2       ab      3
-abc    3       abc     3
-abcd   4       abcd    4
+a      5       a       3
+ab     5       ab      3
+abc    5       abc     3
+abcd   5       abcd    4
 abcde  5       abcde   5
 abcde  5       abcdef  6
 abcde  5       abcdefg 7

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/llap/vector_char_varchar_1.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/vector_char_varchar_1.q.out 
b/ql/src/test/results/clientpositive/llap/vector_char_varchar_1.q.out
index 5a23539..0ba2755 100644
--- a/ql/src/test/results/clientpositive/llap/vector_char_varchar_1.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_char_varchar_1.q.out
@@ -291,4 +291,4 @@ char_ctas_1._c0     char_ctas_1._c1
 10     m thgilnus
 10     sdrow emos
 10     t eht sgeb
-8      wolley  
+10     wolley  

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/llap/vectorized_parquet_types.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/llap/vectorized_parquet_types.q.out 
b/ql/src/test/results/clientpositive/llap/vectorized_parquet_types.q.out
index d0d13ba..cf45c90 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_parquet_types.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_parquet_types.q.out
@@ -211,10 +211,10 @@ POSTHOOK: query: SELECT cchar, LENGTH(cchar), cvarchar, 
LENGTH(cvarchar), cdecim
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@parquet_types_n2
 #### A masked pattern was here ####
-a      1       a       3       48.88   1
-ab     2       ab      3       8.72    1
-abc    3       abc     3       90.21   1
-abcd   4       abcd    4       3.89    1
+a      5       a       3       48.88   1
+ab     5       ab      3       8.72    1
+abc    5       abc     3       90.21   1
+abcd   5       abcd    4       3.89    1
 abcde  5       abcde   5       56.23   1
 abcde  5       abcdef  6       90.21   1
 abcde  5       abcdefg 7       6.09    1
@@ -552,10 +552,10 @@ POSTHOOK: query: SELECT cchar, LENGTH(cchar), cvarchar, 
LENGTH(cvarchar), cdecim
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@parquet_type_nodict
 #### A masked pattern was here ####
-a      1       a       3       48.88   1
-ab     2       ab      3       8.72    1
-abc    3       abc     3       90.21   1
-abcd   4       abcd    4       3.89    1
+a      5       a       3       48.88   1
+ab     5       ab      3       8.72    1
+abc    5       abc     3       90.21   1
+abcd   5       abcd    4       3.89    1
 abcde  5       abcde   5       56.23   1
 abcde  5       abcdef  6       90.21   1
 abcde  5       abcdefg 7       6.09    1

http://git-wip-us.apache.org/repos/asf/hive/blob/c8b3f9aa/ql/src/test/results/clientpositive/vectorized_parquet_types.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vectorized_parquet_types.q.out 
b/ql/src/test/results/clientpositive/vectorized_parquet_types.q.out
index c1f2d54..772e5b0 100644
--- a/ql/src/test/results/clientpositive/vectorized_parquet_types.q.out
+++ b/ql/src/test/results/clientpositive/vectorized_parquet_types.q.out
@@ -279,10 +279,10 @@ POSTHOOK: query: SELECT cchar, LENGTH(cchar), cvarchar, 
LENGTH(cvarchar), cdecim
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@parquet_types_n2
 #### A masked pattern was here ####
-a      1       a       3       48.88   1
-ab     2       ab      3       8.72    1
-abc    3       abc     3       90.21   1
-abcd   4       abcd    4       3.89    1
+a      5       a       3       48.88   1
+ab     5       ab      3       8.72    1
+abc    5       abc     3       90.21   1
+abcd   5       abcd    4       3.89    1
 abcde  5       abcde   5       56.23   1
 abcde  5       abcdef  6       90.21   1
 abcde  5       abcdefg 7       6.09    1
@@ -678,10 +678,10 @@ POSTHOOK: query: SELECT cchar, LENGTH(cchar), cvarchar, 
LENGTH(cvarchar), cdecim
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@parquet_type_nodict
 #### A masked pattern was here ####
-a      1       a       3       48.88   1
-ab     2       ab      3       8.72    1
-abc    3       abc     3       90.21   1
-abcd   4       abcd    4       3.89    1
+a      5       a       3       48.88   1
+ab     5       ab      3       8.72    1
+abc    5       abc     3       90.21   1
+abcd   5       abcd    4       3.89    1
 abcde  5       abcde   5       56.23   1
 abcde  5       abcdef  6       90.21   1
 abcde  5       abcdefg 7       6.09    1

Reply via email to