You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by mm...@apache.org on 2016/05/03 01:59:12 UTC

[01/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Repository: hive
Updated Branches:
  refs/heads/master 2f0339b08 -> d5285d8eb


http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java
index f44a84b..b375d26 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java
@@ -18,24 +18,15 @@
 
 package org.apache.hadoop.hive.serde2.lazy.fast;
 
-import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.CharacterCodingException;
 import java.sql.Date;
-import java.sql.Timestamp;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
 import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
 import org.apache.hadoop.hive.serde2.fast.DeserializeRead;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
-import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
-import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
-import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
 import org.apache.hadoop.hive.serde2.lazy.LazyBinary;
 import org.apache.hadoop.hive.serde2.lazy.LazyByte;
 import org.apache.hadoop.hive.serde2.lazy.LazyInteger;
@@ -43,11 +34,8 @@ import org.apache.hadoop.hive.serde2.lazy.LazyLong;
 import org.apache.hadoop.hive.serde2.lazy.LazySerDeParameters;
 import org.apache.hadoop.hive.serde2.lazy.LazyShort;
 import org.apache.hadoop.hive.serde2.lazy.LazyUtils;
-import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 import org.apache.hadoop.io.Text;
 import org.apache.hive.common.util.TimestampParser;
 
@@ -66,17 +54,17 @@ import org.apache.hive.common.util.TimestampParser;
  * other type specific buffers.  So, those references are only valid until the next time set is
  * called.
  */
-public final class LazySimpleDeserializeRead implements DeserializeRead {
+public final class LazySimpleDeserializeRead extends DeserializeRead {
   public static final Logger LOG = LoggerFactory.getLogger(LazySimpleDeserializeRead.class.getName());
 
-  private TypeInfo[] typeInfos;
-
+  private int[] startPosition;
 
   private byte separator;
   private boolean isEscaped;
   private byte escapeChar;
   private byte[] nullSequenceBytes;
   private boolean isExtendedBooleanLiteral;
+  private boolean lastColumnTakesRest;
 
   private byte[] bytes;
   private int start;
@@ -87,34 +75,18 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
   private int fieldStart;
   private int fieldLength;
 
-  private boolean saveBool;
-  private byte saveByte;
-  private short saveShort;
-  private int saveInt;
-  private long saveLong;
-  private float saveFloat;
-  private double saveDouble;
-  private byte[] saveBytes;
-  private int saveBytesStart;
-  private int saveBytesLength;
-  private Date saveDate;
-  private Timestamp saveTimestamp;
-  private HiveIntervalYearMonth saveIntervalYearMonth;
-  private HiveIntervalDayTime saveIntervalDayTime;
-  private HiveDecimal saveDecimal;
-  private DecimalTypeInfo saveDecimalTypeInfo;
-
   private Text tempText;
   private TimestampParser timestampParser;
 
-  private boolean readBeyondConfiguredFieldsWarned;
-  private boolean readBeyondBufferRangeWarned;
-  private boolean bufferRangeHasExtraDataWarned;
+  private boolean extraFieldWarned;
+  private boolean missingFieldWarned;
 
   public LazySimpleDeserializeRead(TypeInfo[] typeInfos,
       byte separator, LazySerDeParameters lazyParams) {
+    super(typeInfos);
 
-    this.typeInfos = typeInfos;
+    // Field length is difference between positions hence one extra.
+    startPosition = new int[typeInfos.length + 1];
 
     this.separator = separator;
 
@@ -122,24 +94,21 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
     escapeChar = lazyParams.getEscapeChar();
     nullSequenceBytes = lazyParams.getNullSequence().getBytes();
     isExtendedBooleanLiteral = lazyParams.isExtendedBooleanLiteral();
+    lastColumnTakesRest = lazyParams.isLastColumnTakesRest();
 
     fieldCount = typeInfos.length;
     tempText = new Text();
-    readBeyondConfiguredFieldsWarned = false;
-    readBeyondBufferRangeWarned = false;
-    bufferRangeHasExtraDataWarned = false;
+    extraFieldWarned = false;
+    missingFieldWarned = false;
   }
 
-  // Not public since we must have the field count so every 8 fields NULL bytes can be navigated.
-  private LazySimpleDeserializeRead() {
+  public LazySimpleDeserializeRead(TypeInfo[] typeInfos, LazySerDeParameters lazyParams) {
+    this(typeInfos, lazyParams.getSeparators()[0], lazyParams);
   }
 
-  /*
-   * The type information for all fields.
-   */
-  @Override
-  public TypeInfo[] typeInfos() {
-    return typeInfos;
+  // Not public since we must have the field count so every 8 fields NULL bytes can be navigated.
+  private LazySimpleDeserializeRead() {
+    super();
   }
 
   /*
@@ -154,6 +123,64 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
     fieldIndex = -1;
   }
 
+  /**
+   * Parse the byte[] and fill each field.
+   *
+   * This is an adapted version of the parse method in the LazyStruct class.
+   * They should parse things the same way.
+   */
+  private void parse() {
+
+    int structByteEnd = end;
+    int fieldId = 0;
+    int fieldByteBegin = start;
+    int fieldByteEnd = start;
+
+    // Go through all bytes in the byte[]
+    while (fieldByteEnd <= structByteEnd) {
+      if (fieldByteEnd == structByteEnd || bytes[fieldByteEnd] == separator) {
+        // Reached the end of a field?
+        if (lastColumnTakesRest && fieldId == fieldCount - 1) {
+          fieldByteEnd = structByteEnd;
+        }
+        startPosition[fieldId] = fieldByteBegin;
+        fieldId++;
+        if (fieldId == fieldCount || fieldByteEnd == structByteEnd) {
+          // All fields have been parsed, or bytes have been parsed.
+          // We need to set the startPosition of fields.length to ensure we
+          // can use the same formula to calculate the length of each field.
+          // For missing fields, their starting positions will all be the same,
+          // which will make their lengths to be -1 and uncheckedGetField will
+          // return these fields as NULLs.
+          for (int i = fieldId; i <= fieldCount; i++) {
+            startPosition[i] = fieldByteEnd + 1;
+          }
+          break;
+        }
+        fieldByteBegin = fieldByteEnd + 1;
+        fieldByteEnd++;
+      } else {
+        if (isEscaped && bytes[fieldByteEnd] == escapeChar
+            && fieldByteEnd + 1 < structByteEnd) {
+          // ignore the char after escape_char
+          fieldByteEnd += 2;
+        } else {
+          fieldByteEnd++;
+        }
+      }
+    }
+
+    // Extra bytes at the end?
+    if (!extraFieldWarned && fieldByteEnd < structByteEnd) {
+      doExtraFieldWarned();
+    }
+
+    // Missing fields?
+    if (!missingFieldWarned && fieldId < fieldCount) {
+      doMissingFieldWarned(fieldId);
+    }
+  }
+
   /*
    * Reads the NULL information for a field.
    *
@@ -162,57 +189,24 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
    */
   @Override
   public boolean readCheckNull() {
-    if (++fieldIndex >= fieldCount) {
-      // Reading beyond the specified field count produces NULL.
-      if (!readBeyondConfiguredFieldsWarned) {
-        // Warn only once.
-        LOG.info("Reading beyond configured fields! Configured " + fieldCount + " fields but "
-            + " reading more (NULLs returned).  Ignoring similar problems.");
-        readBeyondConfiguredFieldsWarned = true;
-      }
+    if (fieldIndex == -1) {
+      parse();
+      fieldIndex = 0;
+    } else if (fieldIndex + 1 >= fieldCount) {
       return true;
+    } else {
+      fieldIndex++;
     }
-    if (offset > end) {
-      // We must allow for an empty field at the end, so no strict >= checking.
-      if (!readBeyondBufferRangeWarned) {
-        // Warn only once.
-        int length = end - start;
-        LOG.info("Reading beyond buffer range! Buffer range " +  start
-            + " for length " + length + " but reading more (NULLs returned)."
-            + "  Ignoring similar problems.");
-        readBeyondBufferRangeWarned = true;
-      }
-
-      // char[] charsBuffer = new char[end - start];
-      // for (int c = 0; c < charsBuffer.length; c++) {
-      //  charsBuffer[c] = (char) (bytes[start + c] & 0xFF);
-      // }
 
+    // Do we want this field?
+    if (columnsToInclude != null && !columnsToInclude[fieldIndex]) {
       return true;
     }
 
-    fieldStart = offset;
-    while (true) {
-      if (offset >= end) {
-        fieldLength = offset - fieldStart;
-        break;
-      }
-      if (bytes[offset] == separator) {
-        fieldLength = (offset++ - fieldStart);
-        break;
-      }
-      if (isEscaped && bytes[offset] == escapeChar
-          && offset + 1 < end) {
-        // Ignore the char after escape char.
-        offset += 2;
-      } else {
-        offset++;
-      }
-    }
-
-    char[] charField = new char[fieldLength];
-    for (int c = 0; c < charField.length; c++) {
-      charField[c] = (char) (bytes[fieldStart + c] & 0xFF);
+    fieldStart = startPosition[fieldIndex];
+    fieldLength = startPosition[fieldIndex + 1] - startPosition[fieldIndex] - 1;
+    if (fieldLength < 0) {
+      return true;
     }
 
     // Is the field the configured string representing NULL?
@@ -231,7 +225,10 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
       }
     }
 
-    switch (((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory()) {
+    /*
+     * We have a field and are positioned to it.  Read it.
+     */
+    switch (primitiveCategories[fieldIndex]) {
     case BOOLEAN:
       {
         int i = fieldStart;
@@ -240,7 +237,7 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
               (bytes[i + 1] == 'R' || bytes[i + 1] == 'r') &&
               (bytes[i + 2] == 'U' || bytes[i + 1] == 'u') &&
               (bytes[i + 3] == 'E' || bytes[i + 3] == 'e')) {
-            saveBool = true;
+            currentBoolean = true;
           } else {
             // No boolean value match for 5 char field.
             return true;
@@ -251,7 +248,7 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
               (bytes[i + 2] == 'L' || bytes[i + 2] == 'l') &&
               (bytes[i + 3] == 'S' || bytes[i + 3] == 's') &&
               (bytes[i + 4] == 'E' || bytes[i + 4] == 'e')) {
-            saveBool = false;
+            currentBoolean = false;
           } else {
             // No boolean value match for 4 char field.
             return true;
@@ -259,9 +256,9 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
         } else if (isExtendedBooleanLiteral && fieldLength == 1) {
           byte b = bytes[fieldStart];
           if (b == '1' || b == 't' || b == 'T') {
-            saveBool = true;
+            currentBoolean = true;
           } else if (b == '0' || b == 'f' || b == 'F') {
-            saveBool = false;
+            currentBoolean = false;
           } else {
             // No boolean value match for extended 1 char field.
             return true;
@@ -274,66 +271,42 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
       break;
     case BYTE:
       try {
-        saveByte = LazyByte.parseByte(bytes, fieldStart, fieldLength, 10);
+        currentByte = LazyByte.parseByte(bytes, fieldStart, fieldLength, 10);
       } catch (NumberFormatException e) {
         logExceptionMessage(bytes, fieldStart, fieldLength, "TINYINT");
         return true;
       }
-//    if (!parseLongFast()) {
-//      return true;
-//    }
-//    saveShort = (short) saveLong;
-//    if (saveShort != saveLong) {
-//      return true;
-//    }
       break;
     case SHORT:
       try {
-        saveShort = LazyShort.parseShort(bytes, fieldStart, fieldLength, 10);
+        currentShort = LazyShort.parseShort(bytes, fieldStart, fieldLength, 10);
       } catch (NumberFormatException e) {
         logExceptionMessage(bytes, fieldStart, fieldLength, "SMALLINT");
         return true;
       }
-//    if (!parseLongFast()) {
-//      return true;
-//    }
-//    saveShort = (short) saveLong;
-//    if (saveShort != saveLong) {
-//      return true;
-//    }
       break;
     case INT:
       try {
-        saveInt = LazyInteger.parseInt(bytes, fieldStart, fieldLength, 10);
+        currentInt = LazyInteger.parseInt(bytes, fieldStart, fieldLength, 10);
       } catch (NumberFormatException e) {
         logExceptionMessage(bytes, fieldStart, fieldLength, "INT");
         return true;
       }
-//    if (!parseLongFast()) {
-//      return true;
-//    }
-//    saveInt = (int) saveLong;
-//    if (saveInt != saveLong) {
-//      return true;
-//    }
       break;
     case LONG:
       try {
-        saveLong = LazyLong.parseLong(bytes, fieldStart, fieldLength, 10);
+        currentLong = LazyLong.parseLong(bytes, fieldStart, fieldLength, 10);
       } catch (NumberFormatException e) {
         logExceptionMessage(bytes, fieldStart, fieldLength, "BIGINT");
         return true;
       }
-//    if (!parseLongFast()) {
-//      return true;
-//    }
       break;
     case FLOAT:
       {
         String byteData = null;
         try {
           byteData = Text.decode(bytes, fieldStart, fieldLength);
-          saveFloat = Float.parseFloat(byteData);
+          currentFloat = Float.parseFloat(byteData);
         } catch (NumberFormatException e) {
           LOG.debug("Data not in the Float data type range so converted to null. Given data is :"
               + byteData, e);
@@ -343,16 +316,13 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
           return true;
         }
       }
-//    if (!parseFloat()) {
-//      return true;
-//    }
       break;
     case DOUBLE:
       {
         String byteData = null;
         try {
           byteData = Text.decode(bytes, fieldStart, fieldLength);
-          saveDouble = Double.parseDouble(byteData);
+          currentDouble = Double.parseDouble(byteData);
         } catch (NumberFormatException e) {
           LOG.debug("Data not in the Double data type range so converted to null. Given data is :"
               + byteData, e);
@@ -362,9 +332,6 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
           return true;
         }
       }
-//    if (!parseDouble()) {
-//      return true;
-//    }
       break;
 
     case STRING:
@@ -372,14 +339,14 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
     case VARCHAR:
       if (isEscaped) {
         LazyUtils.copyAndEscapeStringDataToText(bytes, fieldStart, fieldLength, escapeChar, tempText);
-        saveBytes = tempText.getBytes();
-        saveBytesStart = 0;
-        saveBytesLength = tempText.getLength();
+        currentBytes = tempText.getBytes();
+        currentBytesStart = 0;
+        currentBytesLength = tempText.getLength();
       } else {
         // if the data is not escaped, simply copy the data.
-        saveBytes = bytes;
-        saveBytesStart = fieldStart;
-        saveBytesLength = fieldLength;
+        currentBytes = bytes;
+        currentBytesStart = fieldStart;
+        currentBytesLength = fieldLength;
       }
       break;
     case BINARY:
@@ -389,9 +356,9 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
         byte[] decoded = LazyBinary.decodeIfNeeded(recv);
         // use the original bytes in case decoding should fail
         decoded = decoded.length > 0 ? decoded : recv;
-        saveBytes = decoded;
-        saveBytesStart = 0;
-        saveBytesLength = decoded.length;
+        currentBytes = decoded;
+        currentBytesStart = 0;
+        currentBytesLength = decoded.length;
       }
       break;
     case DATE:
@@ -399,15 +366,12 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
         String s = null;
         try {
           s = Text.decode(bytes, fieldStart, fieldLength);
-          saveDate = Date.valueOf(s);
+          currentDateWritable.set(Date.valueOf(s));
         } catch (Exception e) {
           logExceptionMessage(bytes, fieldStart, fieldLength, "DATE");
           return true;
         }
       }
-//    if (!parseDate()) {
-//      return true;
-//    }
       break;
     case TIMESTAMP:
       {
@@ -427,46 +391,37 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
             if (timestampParser == null) {
               timestampParser = new TimestampParser();
             }
-            saveTimestamp = timestampParser.parseTimestamp(s);
+            currentTimestampWritable.set(timestampParser.parseTimestamp(s));
           } catch (IllegalArgumentException e) {
             logExceptionMessage(bytes, fieldStart, fieldLength, "TIMESTAMP");
             return true;
           }
         }
       }
-//    if (!parseTimestamp()) {
-//      return true;
-//    }
       break;
     case INTERVAL_YEAR_MONTH:
       {
         String s = null;
         try {
           s = Text.decode(bytes, fieldStart, fieldLength);
-          saveIntervalYearMonth = HiveIntervalYearMonth.valueOf(s);
+          currentHiveIntervalYearMonthWritable.set(HiveIntervalYearMonth.valueOf(s));
         } catch (Exception e) {
           logExceptionMessage(bytes, fieldStart, fieldLength, "INTERVAL_YEAR_MONTH");
           return true;
         }
       }
-//    if (!parseIntervalYearMonth()) {
-//      return true;
-//    }
       break;
     case INTERVAL_DAY_TIME:
       {
         String s = null;
         try {
           s = Text.decode(bytes, fieldStart, fieldLength);
-          saveIntervalDayTime = HiveIntervalDayTime.valueOf(s);
+          currentHiveIntervalDayTimeWritable.set(HiveIntervalDayTime.valueOf(s));
         } catch (Exception e) {
           logExceptionMessage(bytes, fieldStart, fieldLength, "INTERVAL_DAY_TIME");
           return true;
         }
       }
-//    if (!parseIntervalDayTime()) {
-//      return true;
-//    }
       break;
     case DECIMAL:
       {
@@ -478,25 +433,23 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
           return true;
         }
 
-        saveDecimal = HiveDecimal.create(byteData);
-        saveDecimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex];
-        int precision = saveDecimalTypeInfo.getPrecision();
-        int scale = saveDecimalTypeInfo.getScale();
-        saveDecimal = HiveDecimal.enforcePrecisionScale(saveDecimal, precision,
-            scale);
-        if (saveDecimal == null) {
+        HiveDecimal decimal = HiveDecimal.create(byteData);
+        DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex];
+        int precision = decimalTypeInfo.getPrecision();
+        int scale = decimalTypeInfo.getScale();
+        decimal = HiveDecimal.enforcePrecisionScale(
+            decimal, precision, scale);
+        if (decimal == null) {
           LOG.debug("Data not in the HiveDecimal data type range so converted to null. Given data is :"
               + byteData);
           return true;
         }
+        currentHiveDecimalWritable.set(decimal);
       }
-//    if (!parseDecimal()) {
-//      return true;
-//    }
       break;
 
     default:
-      throw new Error("Unexpected primitive category " + ((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory());
+      throw new Error("Unexpected primitive category " + primitiveCategories[fieldIndex].name());
     }
 
     return false;
@@ -520,17 +473,7 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
    */
   @Override
   public void extraFieldsCheck() {
-    if (offset < end) {
-      // We did not consume all of the byte range.
-      if (!bufferRangeHasExtraDataWarned) {
-        // Warn only once.
-        int length = end - start;
-        LOG.info("Not all fields were read in the buffer range! Buffer range " +  start
-            + " for length " + length + " but reading more (NULLs returned)."
-            + "  Ignoring similar problems.");
-        bufferRangeHasExtraDataWarned = true;
-      }
-    }
+    // UNDONE: Get rid of...
   }
 
   /*
@@ -538,407 +481,30 @@ public final class LazySimpleDeserializeRead implements DeserializeRead {
    */
   @Override
   public boolean readBeyondConfiguredFieldsWarned() {
-    return readBeyondConfiguredFieldsWarned;
+    return missingFieldWarned;
   }
   @Override
   public boolean readBeyondBufferRangeWarned() {
-    return readBeyondBufferRangeWarned;
+    return extraFieldWarned;
   }
   @Override
   public boolean bufferRangeHasExtraDataWarned() {
-    return bufferRangeHasExtraDataWarned;
-  }
-
-  /*
-   * BOOLEAN.
-   */
-  @Override
-  public boolean readBoolean() {
-    return saveBool;
-  }
-
-  /*
-   * BYTE.
-   */
-  @Override
-  public byte readByte() {
-    return saveByte;
-  }
-
-  /*
-   * SHORT.
-   */
-  @Override
-  public short readShort() {
-    return saveShort;
-  }
-
-  /*
-   * INT.
-   */
-  @Override
-  public int readInt() {
-    return saveInt;
- }
-
-  /*
-   * LONG.
-   */
-  @Override
-  public long readLong() {
-    return saveLong;
-  }
-
-  /*
-   * FLOAT.
-   */
-  @Override
-  public float readFloat() {
-    return saveFloat;
-  }
-
-  /*
-   * DOUBLE.
-   */
-  @Override
-  public double readDouble() {
-    return saveDouble;
-  }
-
-  /*
-   * STRING.
-   *
-   * Can be used to read CHAR and VARCHAR when the caller takes responsibility for
-   * truncation/padding issues.
-   */
-
-  // This class is for internal use.
-  private class LazySimpleReadStringResults extends ReadStringResults {
-    public LazySimpleReadStringResults() {
-      super();
-    }
-  }
-
-  // Reading a STRING field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different bytes field.
-  @Override
-  public ReadStringResults createReadStringResults() {
-    return new LazySimpleReadStringResults();
-  }
-
-  @Override
-  public void readString(ReadStringResults readStringResults) {
-    readStringResults.bytes = saveBytes;
-    readStringResults.start = saveBytesStart;
-    readStringResults.length = saveBytesLength;
-  }
-
-  /*
-   * CHAR.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadHiveCharResults extends ReadHiveCharResults {
-
-    // Use our STRING reader.
-    public LazySimpleReadStringResults readStringResults;
-
-    public LazySimpleReadHiveCharResults() {
-      super();
-    }
-
-    public HiveCharWritable getHiveCharWritable() {
-      return hiveCharWritable;
-    }
-  }
-
-  // Reading a CHAR field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different CHAR field.
-  @Override
-  public ReadHiveCharResults createReadHiveCharResults() {
-    return new LazySimpleReadHiveCharResults();
-  }
-
-  @Override
-  public void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOException {
-    LazySimpleReadHiveCharResults LazySimpleReadHiveCharResults = (LazySimpleReadHiveCharResults) readHiveCharResults;
-
-    if (!LazySimpleReadHiveCharResults.isInit()) {
-      LazySimpleReadHiveCharResults.init((CharTypeInfo) typeInfos[fieldIndex]);
-    }
-
-    if (LazySimpleReadHiveCharResults.readStringResults == null) {
-      LazySimpleReadHiveCharResults.readStringResults = new LazySimpleReadStringResults();
-    }
-    LazySimpleReadStringResults readStringResults = LazySimpleReadHiveCharResults.readStringResults;
-
-    // Read the bytes using our basic method.
-    readString(readStringResults);
-
-    // Copy the bytes into our Text object, then truncate.
-    HiveCharWritable hiveCharWritable = LazySimpleReadHiveCharResults.getHiveCharWritable();
-    hiveCharWritable.getTextValue().set(readStringResults.bytes, readStringResults.start, readStringResults.length);
-    hiveCharWritable.enforceMaxLength(LazySimpleReadHiveCharResults.getMaxLength());
-
-    readHiveCharResults.bytes = hiveCharWritable.getTextValue().getBytes();
-    readHiveCharResults.start = 0;
-    readHiveCharResults.length = hiveCharWritable.getTextValue().getLength();
-  }
-
-  /*
-   * VARCHAR.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadHiveVarcharResults extends ReadHiveVarcharResults {
-
-    // Use our bytes reader.
-    public LazySimpleReadStringResults readStringResults;
-
-    public LazySimpleReadHiveVarcharResults() {
-      super();
-    }
-
-    public HiveVarcharWritable getHiveVarcharWritable() {
-      return hiveVarcharWritable;
-    }
-  }
-
-  // Reading a VARCHAR field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different VARCHAR field.
-  @Override
-  public ReadHiveVarcharResults createReadHiveVarcharResults() {
-    return new LazySimpleReadHiveVarcharResults();
-  }
-
-  @Override
-  public void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throws IOException {
-    LazySimpleReadHiveVarcharResults lazySimpleReadHiveVarvarcharResults = (LazySimpleReadHiveVarcharResults) readHiveVarcharResults;
-
-    if (!lazySimpleReadHiveVarvarcharResults.isInit()) {
-      lazySimpleReadHiveVarvarcharResults.init((VarcharTypeInfo) typeInfos[fieldIndex]);
-    }
-
-    if (lazySimpleReadHiveVarvarcharResults.readStringResults == null) {
-      lazySimpleReadHiveVarvarcharResults.readStringResults = new LazySimpleReadStringResults();
-    }
-    LazySimpleReadStringResults readStringResults = lazySimpleReadHiveVarvarcharResults.readStringResults;
-
-    // Read the bytes using our basic method.
-    readString(readStringResults);
-
-    // Copy the bytes into our Text object, then truncate.
-    HiveVarcharWritable hiveVarcharWritable = lazySimpleReadHiveVarvarcharResults.getHiveVarcharWritable();
-    hiveVarcharWritable.getTextValue().set(readStringResults.bytes, readStringResults.start, readStringResults.length);
-    hiveVarcharWritable.enforceMaxLength(lazySimpleReadHiveVarvarcharResults.getMaxLength());
-
-    readHiveVarcharResults.bytes = hiveVarcharWritable.getTextValue().getBytes();
-    readHiveVarcharResults.start = 0;
-    readHiveVarcharResults.length = hiveVarcharWritable.getTextValue().getLength();
-  }
-
-  /*
-   * BINARY.
-   */
-
-  // This class is for internal use.
-  private class LazySimpleReadBinaryResults extends ReadBinaryResults {
-    public LazySimpleReadBinaryResults() {
-      super();
-    }
-  }
-
-  // Reading a BINARY field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different bytes field.
-  @Override
-  public ReadBinaryResults createReadBinaryResults() {
-    return new LazySimpleReadBinaryResults();
-  }
-
-  @Override
-  public void readBinary(ReadBinaryResults readBinaryResults) {
-    readBinaryResults.bytes = saveBytes;
-    readBinaryResults.start = saveBytesStart;
-    readBinaryResults.length = saveBytesLength;
-  }
-
-  /*
-   * DATE.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadDateResults extends ReadDateResults {
-
-    public LazySimpleReadDateResults() {
-      super();
-    }
-
-    public DateWritable getDateWritable() {
-      return dateWritable;
-    }
-  }
-
-  // Reading a DATE field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different DATE field.
-  @Override
-  public ReadDateResults createReadDateResults() {
-    return new LazySimpleReadDateResults();
-  }
-
-  @Override
-  public void readDate(ReadDateResults readDateResults) {
-    LazySimpleReadDateResults lazySimpleReadDateResults = (LazySimpleReadDateResults) readDateResults;
-
-    DateWritable dateWritable = lazySimpleReadDateResults.getDateWritable();
-    dateWritable.set(saveDate);
-    saveDate = null;
-   }
-
-
-  /*
-   * INTERVAL_YEAR_MONTH.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadIntervalYearMonthResults extends ReadIntervalYearMonthResults {
-
-    public LazySimpleReadIntervalYearMonthResults() {
-      super();
-    }
-
-    public HiveIntervalYearMonthWritable getHiveIntervalYearMonthWritable() {
-      return hiveIntervalYearMonthWritable;
-    }
-  }
-
-  // Reading a INTERVAL_YEAR_MONTH field require a results object to receive value information.
-  // A separate results object is created by the caller at initialization per different
-  // INTERVAL_YEAR_MONTH field.
-  @Override
-  public ReadIntervalYearMonthResults createReadIntervalYearMonthResults() {
-    return new LazySimpleReadIntervalYearMonthResults();
-  }
-
-  @Override
-  public void readIntervalYearMonth(ReadIntervalYearMonthResults readIntervalYearMonthResults)
-          throws IOException {
-    LazySimpleReadIntervalYearMonthResults lazySimpleReadIntervalYearMonthResults =
-            (LazySimpleReadIntervalYearMonthResults) readIntervalYearMonthResults;
-
-    HiveIntervalYearMonthWritable hiveIntervalYearMonthWritable =
-            lazySimpleReadIntervalYearMonthResults.getHiveIntervalYearMonthWritable();
-    hiveIntervalYearMonthWritable.set(saveIntervalYearMonth);
-    saveIntervalYearMonth = null;
-  }
-
-  /*
-   * INTERVAL_DAY_TIME.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadIntervalDayTimeResults extends ReadIntervalDayTimeResults {
-
-    public LazySimpleReadIntervalDayTimeResults() {
-      super();
-    }
-
-    public HiveIntervalDayTimeWritable getHiveIntervalDayTimeWritable() {
-      return hiveIntervalDayTimeWritable;
-    }
+    return false;  // UNDONE: Get rid of...
   }
 
-  // Reading a INTERVAL_DAY_TIME field require a results object to receive value information.
-  // A separate results object is created by the caller at initialization per different
-  // INTERVAL_DAY_TIME field.
-  @Override
-  public ReadIntervalDayTimeResults createReadIntervalDayTimeResults() {
-    return new LazySimpleReadIntervalDayTimeResults();
+  private void doExtraFieldWarned() {
+    extraFieldWarned = true;
+    LOG.warn("Extra bytes detected at the end of the row! Ignoring similar "
+        + "problems.");
   }
 
-  @Override
-  public void readIntervalDayTime(ReadIntervalDayTimeResults readIntervalDayTimeResults)
-          throws IOException {
-    LazySimpleReadIntervalDayTimeResults lazySimpleReadIntervalDayTimeResults =
-        (LazySimpleReadIntervalDayTimeResults) readIntervalDayTimeResults;
-
-    HiveIntervalDayTimeWritable hiveIntervalDayTimeWritable =
-            lazySimpleReadIntervalDayTimeResults.getHiveIntervalDayTimeWritable();
-    hiveIntervalDayTimeWritable.set(saveIntervalDayTime);
-    saveIntervalDayTime = null;
+  private void doMissingFieldWarned(int fieldId) {
+    missingFieldWarned = true;
+    LOG.info("Missing fields! Expected " + fieldCount + " fields but "
+        + "only got " + fieldId + "! Ignoring similar problems.");
   }
 
-  /*
-   * TIMESTAMP.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadTimestampResults extends ReadTimestampResults {
-
-    public LazySimpleReadTimestampResults() {
-      super();
-    }
-
-    public TimestampWritable getTimestampWritable() {
-      return timestampWritable;
-    }
-  }
-
-  // Reading a TIMESTAMP field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different TIMESTAMP field.
-  @Override
-  public ReadTimestampResults createReadTimestampResults() {
-    return new LazySimpleReadTimestampResults();
-  }
-
-  @Override
-  public void readTimestamp(ReadTimestampResults readTimestampResults) {
-    LazySimpleReadTimestampResults lazySimpleReadTimestampResults =
-            (LazySimpleReadTimestampResults) readTimestampResults;
-
-    TimestampWritable timestampWritable = lazySimpleReadTimestampResults.getTimestampWritable();
-    timestampWritable.set(saveTimestamp);
-    saveTimestamp = null;
-  }
-
-  /*
-   * DECIMAL.
-   */
-
-  // This class is for internal use.
-  private static class LazySimpleReadDecimalResults extends ReadDecimalResults {
-
-    HiveDecimal hiveDecimal;
-
-    public LazySimpleReadDecimalResults() {
-      super();
-    }
-
-    @Override
-    public HiveDecimal getHiveDecimal() {
-      return hiveDecimal;
-    }
-  }
-
-  // Reading a DECIMAL field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different DECIMAL field.
-  @Override
-  public ReadDecimalResults createReadDecimalResults() {
-    return new LazySimpleReadDecimalResults();
-  }
-
-  @Override
-  public void readHiveDecimal(ReadDecimalResults readDecimalResults) {
-    LazySimpleReadDecimalResults lazySimpleReadDecimalResults = (LazySimpleReadDecimalResults) readDecimalResults;
-
-    if (!lazySimpleReadDecimalResults.isInit()) {
-      lazySimpleReadDecimalResults.init(saveDecimalTypeInfo);
-    }
-
-    lazySimpleReadDecimalResults.hiveDecimal = saveDecimal;
-
-    saveDecimal = null;
-    saveDecimalTypeInfo = null;
-  }
+  //------------------------------------------------------------------------------------------------
 
   private static byte[] maxLongBytes = ((Long) Long.MAX_VALUE).toString().getBytes();
   private static int maxLongDigitsCount = maxLongBytes.length;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java
index c5f0730..4415431 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/fast/LazyBinaryDeserializeRead.java
@@ -20,28 +20,17 @@ package org.apache.hadoop.hive.serde2.lazybinary.fast;
 
 import java.io.EOFException;
 import java.io.IOException;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.serde2.fast.DeserializeRead;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
-import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
-import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
-import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
-import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
 import org.apache.hadoop.hive.serde2.io.TimestampWritable;
 import org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe;
 import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils;
 import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils.VInt;
 import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils.VLong;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 
 /*
  * Directly deserialize with the caller reading field-by-field the LazyBinary serialization format.
@@ -57,11 +46,9 @@ import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
  * other type specific buffers.  So, those references are only valid until the next time set is
  * called.
  */
-public final class LazyBinaryDeserializeRead implements DeserializeRead {
+public final class LazyBinaryDeserializeRead extends DeserializeRead {
   public static final Logger LOG = LoggerFactory.getLogger(LazyBinaryDeserializeRead.class.getName());
 
-  private TypeInfo[] typeInfos;
-
   private byte[] bytes;
   private int start;
   private int offset;
@@ -70,20 +57,16 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
   private int fieldIndex;
   private byte nullByte;
 
-  private DecimalTypeInfo saveDecimalTypeInfo;
-  private HiveDecimal saveDecimal;
-
   // Object to receive results of reading a decoded variable length int or long.
   private VInt tempVInt;
   private VLong tempVLong;
-  private HiveDecimalWritable tempHiveDecimalWritable;
 
   private boolean readBeyondConfiguredFieldsWarned;
   private boolean readBeyondBufferRangeWarned;
   private boolean bufferRangeHasExtraDataWarned;
 
   public LazyBinaryDeserializeRead(TypeInfo[] typeInfos) {
-    this.typeInfos = typeInfos;
+    super(typeInfos);
     fieldCount = typeInfos.length;
     tempVInt = new VInt();
     tempVLong = new VLong();
@@ -94,13 +77,7 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
 
   // Not public since we must have the field count so every 8 fields NULL bytes can be navigated.
   private LazyBinaryDeserializeRead() {
-  }
-
-  /*
-   * The type information for all fields.
-   */
-  public TypeInfo[] typeInfos() {
-    return typeInfos;
+    super();
   }
 
   /*
@@ -144,7 +121,11 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
     }
 
     // NOTE: The bit is set to 1 if a field is NOT NULL.
-    if ((nullByte & (1 << (fieldIndex % 8))) != 0) {
+    boolean isNull;
+    if ((nullByte & (1 << (fieldIndex % 8))) == 0) {
+      isNull = true;
+    } else {
+      isNull = false;    // Assume.
 
       // Make sure there is at least one byte that can be read for a value.
       if (offset >= end) {
@@ -153,18 +134,192 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
         warnBeyondEof();
       }
 
-      // We have a field and are positioned to it.
+      /*
+       * We have a field and are positioned to it.  Read it.
+       */
+      switch (primitiveCategories[fieldIndex]) {
+      case BOOLEAN:
+        // No check needed for single byte read.
+        currentBoolean = (bytes[offset++] != 0);
+        break;
+      case BYTE:
+        // No check needed for single byte read.
+        currentByte = bytes[offset++];
+        break;
+      case SHORT:
+        // Last item -- ok to be at end.
+        if (offset + 2 > end) {
+          warnBeyondEof();
+        }
+        currentShort = LazyBinaryUtils.byteArrayToShort(bytes, offset);
+        offset += 2;
+        break;
+      case INT:
+        LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+        offset += tempVInt.length;
+        // Last item -- ok to be at end.
+        if (offset > end) {
+          warnBeyondEof();
+        }
+        currentInt = tempVInt.value;
+        break;
+      case LONG:
+        LazyBinaryUtils.readVLong(bytes, offset, tempVLong);
+        offset += tempVLong.length;
+        // Last item -- ok to be at end.
+        if (offset > end) {
+          warnBeyondEof();
+        }
+        currentLong = tempVLong.value;
+        break;
+      case FLOAT:
+        // Last item -- ok to be at end.
+        if (offset + 4 > end) {
+          warnBeyondEof();
+        }
+        currentFloat = Float.intBitsToFloat(LazyBinaryUtils.byteArrayToInt(bytes, offset));
+        offset += 4;
+        break;
+      case DOUBLE:
+        // Last item -- ok to be at end.
+        if (offset + 8 > end) {
+          warnBeyondEof();
+        }
+        currentDouble = Double.longBitsToDouble(LazyBinaryUtils.byteArrayToLong(bytes, offset));
+        offset += 8;
+        break;
+
+      case BINARY:
+      case STRING:
+      case CHAR:
+      case VARCHAR:
+        {
+          // using vint instead of 4 bytes
+          LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+          offset += tempVInt.length;
+          // Could be last item for empty string -- ok to be at end.
+          if (offset > end) {
+            warnBeyondEof();
+          }
+          int saveStart = offset;
+          int length = tempVInt.value;
+          offset += length;
+          // Last item -- ok to be at end.
+          if (offset > end) {
+            warnBeyondEof();
+          }
+
+          currentBytes = bytes;
+          currentBytesStart = saveStart;
+          currentBytesLength = length;
+        }
+        break;
+      case DATE:
+        LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+        offset += tempVInt.length;
+        // Last item -- ok to be at end.
+        if (offset > end) {
+          warnBeyondEof();
+        }
+
+        currentDateWritable.set(tempVInt.value);
+        break;
+      case TIMESTAMP:
+        {
+          int length = TimestampWritable.getTotalLength(bytes, offset);
+          int saveStart = offset;
+          offset += length;
+          // Last item -- ok to be at end.
+          if (offset > end) {
+            warnBeyondEof();
+          }
+
+          currentTimestampWritable.set(bytes, saveStart);
+        }
+        break;
+      case INTERVAL_YEAR_MONTH:
+        LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+        offset += tempVInt.length;
+        // Last item -- ok to be at end.
+        if (offset > end) {
+          warnBeyondEof();
+        }
+        currentHiveIntervalYearMonthWritable.set(tempVInt.value);
+        break;
+      case INTERVAL_DAY_TIME:
+        LazyBinaryUtils.readVLong(bytes, offset, tempVLong);
+        offset += tempVLong.length;
+        if (offset >= end) {
+          // Overshoot or not enough for next item.
+          warnBeyondEof();
+        }
+        LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+        offset += tempVInt.length;
+        // Last item -- ok to be at end.
+        if (offset > end) {
+          warnBeyondEof();
+        }
+
+        currentHiveIntervalDayTimeWritable.set(tempVLong.value, tempVInt.value);
+        break;
+      case DECIMAL:
+        {
+          // Since enforcing precision and scale can cause a HiveDecimal to become NULL,
+          // we must read it, enforce it here, and either return NULL or buffer the result.
+
+          // These calls are to see how much data there is. The setFromBytes call below will do the same
+          // readVInt reads but actually unpack the decimal.
+          LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+          int saveStart = offset;
+          offset += tempVInt.length;
+          if (offset >= end) {
+            // Overshoot or not enough for next item.
+            warnBeyondEof();
+          }
+          LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
+          offset += tempVInt.length;
+          if (offset >= end) {
+            // Overshoot or not enough for next item.
+            warnBeyondEof();
+          }
+          offset += tempVInt.value;
+          // Last item -- ok to be at end.
+          if (offset > end) {
+            warnBeyondEof();
+          }
+          int length = offset - saveStart;
+
+          LazyBinarySerDe.setFromBytes(bytes, saveStart, length,
+              currentHiveDecimalWritable);
+
+          DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex];
+
+          int precision = decimalTypeInfo.getPrecision();
+          int scale = decimalTypeInfo.getScale();
+
+          HiveDecimal decimal = currentHiveDecimalWritable.getHiveDecimal(precision, scale);
+          if (decimal == null) {
+            isNull = true;
+          } else {
+            // Put value back into writable.
+            currentHiveDecimalWritable.set(decimal);
+          }
+        }
+        break;
 
-      if (((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory() != PrimitiveCategory.DECIMAL) {
-        return false;
+      default:
+        throw new Error("Unexpected primitive category " + primitiveCategories[fieldIndex].name());
       }
 
-      // Since enforcing precision and scale may turn a HiveDecimal into a NULL, we must read
-      // it here.
-      return earlyReadHiveDecimal();
+      /*
+       * Now that we have read through the field -- did we really want it?
+       */
+      if (columnsToInclude != null && !columnsToInclude[fieldIndex]) {
+        isNull = true;
+      }
     }
 
-    // When NULL, we need to move past this field.
+    // Logically move past this field.
     fieldIndex++;
 
     // Every 8 fields we read a new NULL byte.
@@ -178,7 +333,7 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
       }
     }
 
-    return true;
+    return isNull;
   }
 
   /*
@@ -191,7 +346,7 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
         // Warn only once.
         int length = end - start;
         int remaining = end - offset;
-        LOG.info("Not all fields were read in the buffer range! Buffer range " +  start 
+        LOG.info("Not all fields were read in the buffer range! Buffer range " +  start
             + " for length " + length + " but " + remaining + " bytes remain. "
             + "(total buffer length " + bytes.length + ")"
             + "  Ignoring similar problems.");
@@ -220,726 +375,11 @@ public final class LazyBinaryDeserializeRead implements DeserializeRead {
     if (!readBeyondBufferRangeWarned) {
       // Warn only once.
       int length = end - start;
-      LOG.info("Reading beyond buffer range! Buffer range " +  start 
+      LOG.info("Reading beyond buffer range! Buffer range " +  start
           + " for length " + length + " but reading more... "
           + "(total buffer length " + bytes.length + ")"
           + "  Ignoring similar problems.");
       readBeyondBufferRangeWarned = true;
     }
   }
-
-  /*
-   * BOOLEAN.
-   */
-  @Override
-  public boolean readBoolean() throws IOException {
-    // No check needed for single byte read.
-    byte result = bytes[offset++];
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return (result != 0);
-  }
-
-  /*
-   * BYTE.
-   */
-  @Override
-  public byte readByte() throws IOException {
-    // No check needed for single byte read.
-    byte result = bytes[offset++];
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      // Get next null byte.
-      if (offset >= end) {
-        warnBeyondEof();
-      }
-      if ((fieldIndex % 8) == 0) {
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return result;
-  }
-
-  /*
-   * SHORT.
-   */
-  @Override
-  public short readShort() throws IOException {
-    // Last item -- ok to be at end.
-    if (offset + 2 > end) {
-      warnBeyondEof();
-    }
-    short result = LazyBinaryUtils.byteArrayToShort(bytes, offset);
-    offset += 2;
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return result;
-  }
-
-  /*
-   * INT.
-   */
-  @Override
-  public int readInt() throws IOException {
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    offset += tempVInt.length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return tempVInt.value;
-  }
-
-  /*
-   * LONG.
-   */
-  @Override
-  public long readLong() throws IOException {
-    LazyBinaryUtils.readVLong(bytes, offset, tempVLong);
-    offset += tempVLong.length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return tempVLong.value;
-  }
-
-  /*
-   * FLOAT.
-   */
-  @Override
-  public float readFloat() throws IOException {
-    // Last item -- ok to be at end.
-    if (offset + 4 > end) {
-      warnBeyondEof();
-    }
-    float result = Float.intBitsToFloat(LazyBinaryUtils.byteArrayToInt(bytes, offset));
-    offset += 4;
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return result;
-  }
-
-  /*
-   * DOUBLE.
-   */
-  @Override
-  public double readDouble() throws IOException {
-    // Last item -- ok to be at end.
-    if (offset + 8 > end) {
-      warnBeyondEof();
-    }
-    double result = Double.longBitsToDouble(LazyBinaryUtils.byteArrayToLong(bytes, offset));
-    offset += 8;
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    return result;
-  }
-
-  /*
-   * STRING.
-   *
-   * Can be used to read CHAR and VARCHAR when the caller takes responsibility for
-   * truncation/padding issues.
-   */
-
-  // This class is for internal use.
-  private class LazyBinaryReadStringResults extends ReadStringResults {
-    public LazyBinaryReadStringResults() {
-      super();
-    }
-  }
-
-  // Reading a STRING field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different bytes field. 
-  @Override
-  public ReadStringResults createReadStringResults() {
-    return new LazyBinaryReadStringResults();
-  }
-
-  @Override
-  public void readString(ReadStringResults readStringResults) throws IOException {
-    // using vint instead of 4 bytes
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    offset += tempVInt.length;
-    // Could be last item for empty string -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-    int saveStart = offset;
-    int length = tempVInt.value;
-    offset += length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    readStringResults.bytes = bytes;
-    readStringResults.start = saveStart;
-    readStringResults.length = length;
-  }
-
-  /*
-   * CHAR.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadHiveCharResults extends ReadHiveCharResults {
-
-    // Use our STRING reader.
-    public LazyBinaryReadStringResults readStringResults;
-
-    public LazyBinaryReadHiveCharResults() {
-      super();
-    }
-
-    public HiveCharWritable getHiveCharWritable() {
-      return hiveCharWritable;
-    }
-  }
-
-  // Reading a CHAR field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different CHAR field. 
-  @Override
-  public ReadHiveCharResults createReadHiveCharResults() {
-    return new LazyBinaryReadHiveCharResults();
-  }
-
-  public void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOException {
-    LazyBinaryReadHiveCharResults lazyBinaryReadHiveCharResults = (LazyBinaryReadHiveCharResults) readHiveCharResults;
-
-    if (!lazyBinaryReadHiveCharResults.isInit()) {
-      lazyBinaryReadHiveCharResults.init((CharTypeInfo) typeInfos[fieldIndex]);
-    }
-
-    if (lazyBinaryReadHiveCharResults.readStringResults == null) {
-      lazyBinaryReadHiveCharResults.readStringResults = new LazyBinaryReadStringResults();
-    }
-    LazyBinaryReadStringResults readStringResults = lazyBinaryReadHiveCharResults.readStringResults;
-
-    // Read the bytes using our basic method.
-    readString(readStringResults);
-
-    // Copy the bytes into our Text object, then truncate.
-    HiveCharWritable hiveCharWritable = lazyBinaryReadHiveCharResults.getHiveCharWritable();
-    hiveCharWritable.getTextValue().set(readStringResults.bytes, readStringResults.start, readStringResults.length);
-    hiveCharWritable.enforceMaxLength(lazyBinaryReadHiveCharResults.getMaxLength());
-
-    readHiveCharResults.bytes = hiveCharWritable.getTextValue().getBytes();
-    readHiveCharResults.start = 0;
-    readHiveCharResults.length = hiveCharWritable.getTextValue().getLength();
-  }
-
-  /*
-   * VARCHAR.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadHiveVarcharResults extends ReadHiveVarcharResults {
-
-    // Use our STRING reader.
-    public LazyBinaryReadStringResults readStringResults;
-
-    public LazyBinaryReadHiveVarcharResults() {
-      super();
-    }
-
-    public HiveVarcharWritable getHiveVarcharWritable() {
-      return hiveVarcharWritable;
-    }
-  }
-
-  // Reading a VARCHAR field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different VARCHAR field. 
-  @Override
-  public ReadHiveVarcharResults createReadHiveVarcharResults() {
-    return new LazyBinaryReadHiveVarcharResults();
-  }
-
-  public void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throws IOException {
-    LazyBinaryReadHiveVarcharResults lazyBinaryReadHiveVarcharResults = (LazyBinaryReadHiveVarcharResults) readHiveVarcharResults;
-
-    if (!lazyBinaryReadHiveVarcharResults.isInit()) {
-      lazyBinaryReadHiveVarcharResults.init((VarcharTypeInfo) typeInfos[fieldIndex]);
-    }
-
-    if (lazyBinaryReadHiveVarcharResults.readStringResults == null) {
-      lazyBinaryReadHiveVarcharResults.readStringResults = new LazyBinaryReadStringResults();
-    }
-    LazyBinaryReadStringResults readStringResults = lazyBinaryReadHiveVarcharResults.readStringResults;
-
-    // Read the bytes using our basic method.
-    readString(readStringResults);
-
-    // Copy the bytes into our Text object, then truncate.
-    HiveVarcharWritable hiveVarcharWritable = lazyBinaryReadHiveVarcharResults.getHiveVarcharWritable();
-    hiveVarcharWritable.getTextValue().set(readStringResults.bytes, readStringResults.start, readStringResults.length);
-    hiveVarcharWritable.enforceMaxLength(lazyBinaryReadHiveVarcharResults.getMaxLength());
-
-    readHiveVarcharResults.bytes = hiveVarcharWritable.getTextValue().getBytes();
-    readHiveVarcharResults.start = 0;
-    readHiveVarcharResults.length = hiveVarcharWritable.getTextValue().getLength();
-  }
-
-  /*
-   * BINARY.
-   */
-
-  // This class is for internal use.
-  private class LazyBinaryReadBinaryResults extends ReadBinaryResults {
-
-    // Use our STRING reader.
-    public LazyBinaryReadStringResults readStringResults;
-
-    public LazyBinaryReadBinaryResults() {
-      super();
-    }
-  }
-
-  // Reading a BINARY field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different bytes field. 
-  @Override
-  public ReadBinaryResults createReadBinaryResults() {
-    return new LazyBinaryReadBinaryResults();
-  }
-
-  public void readBinary(ReadBinaryResults readBinaryResults) throws IOException {
-    LazyBinaryReadBinaryResults lazyBinaryReadBinaryResults = (LazyBinaryReadBinaryResults) readBinaryResults;
-
-    if (lazyBinaryReadBinaryResults.readStringResults == null) {
-      lazyBinaryReadBinaryResults.readStringResults = new LazyBinaryReadStringResults();
-    }
-    LazyBinaryReadStringResults readStringResults = lazyBinaryReadBinaryResults.readStringResults;
-
-    // Read the bytes using our basic method.
-    readString(readStringResults);
-
-    readBinaryResults.bytes = readStringResults.bytes;
-    readBinaryResults.start = readStringResults.start;
-    readBinaryResults.length = readStringResults.length;
-  }
-
-  /*
-   * DATE.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadDateResults extends ReadDateResults {
-
-    public LazyBinaryReadDateResults() {
-      super();
-    }
-
-    public DateWritable getDateWritable() {
-      return dateWritable;
-    }
-  }
-
-  // Reading a DATE field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different DATE field. 
-  @Override
-  public ReadDateResults createReadDateResults() {
-    return new LazyBinaryReadDateResults();
-  }
-
-  @Override
-  public void readDate(ReadDateResults readDateResults) throws IOException {
-    LazyBinaryReadDateResults lazyBinaryReadDateResults = (LazyBinaryReadDateResults) readDateResults;
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    offset += tempVInt.length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    DateWritable dateWritable = lazyBinaryReadDateResults.getDateWritable();
-    dateWritable.set(tempVInt.value);
-  }
-
-  /*
-   * INTERVAL_YEAR_MONTH.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadIntervalYearMonthResults extends ReadIntervalYearMonthResults {
-
-    public LazyBinaryReadIntervalYearMonthResults() {
-      super();
-    }
-
-    public HiveIntervalYearMonthWritable getHiveIntervalYearMonthWritable() {
-      return hiveIntervalYearMonthWritable;
-    }
-  }
-
-  // Reading a INTERVAL_YEAR_MONTH field require a results object to receive value information.
-  // A separate results object is created by the caller at initialization per different
-  // INTERVAL_YEAR_MONTH field. 
-  @Override
-  public ReadIntervalYearMonthResults createReadIntervalYearMonthResults() {
-    return new LazyBinaryReadIntervalYearMonthResults();
-  }
-
-  @Override
-  public void readIntervalYearMonth(ReadIntervalYearMonthResults readIntervalYearMonthResults)
-          throws IOException {
-    LazyBinaryReadIntervalYearMonthResults lazyBinaryReadIntervalYearMonthResults =
-                (LazyBinaryReadIntervalYearMonthResults) readIntervalYearMonthResults;
-
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    offset += tempVInt.length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    HiveIntervalYearMonthWritable hiveIntervalYearMonthWritable =
-                lazyBinaryReadIntervalYearMonthResults.getHiveIntervalYearMonthWritable();
-    hiveIntervalYearMonthWritable.set(tempVInt.value);
-  }
-
-  /*
-   * INTERVAL_DAY_TIME.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadIntervalDayTimeResults extends ReadIntervalDayTimeResults {
-
-    public LazyBinaryReadIntervalDayTimeResults() {
-      super();
-    }
-
-    public HiveIntervalDayTimeWritable getHiveIntervalDayTimeWritable() {
-      return hiveIntervalDayTimeWritable;
-    }
-  }
-
-  // Reading a INTERVAL_DAY_TIME field require a results object to receive value information.
-  // A separate results object is created by the caller at initialization per different
-  // INTERVAL_DAY_TIME field. 
-  @Override
-  public ReadIntervalDayTimeResults createReadIntervalDayTimeResults() {
-    return new LazyBinaryReadIntervalDayTimeResults();
-  }
-
-  @Override
-  public void readIntervalDayTime(ReadIntervalDayTimeResults readIntervalDayTimeResults)
-          throws IOException {
-    LazyBinaryReadIntervalDayTimeResults lazyBinaryReadIntervalDayTimeResults =
-                (LazyBinaryReadIntervalDayTimeResults) readIntervalDayTimeResults;
-    LazyBinaryUtils.readVLong(bytes, offset, tempVLong);
-    offset += tempVLong.length;
-    if (offset >= end) {
-      // Overshoot or not enough for next item.
-      warnBeyondEof();
-    }
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    offset += tempVInt.length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    HiveIntervalDayTimeWritable hiveIntervalDayTimeWritable =
-                lazyBinaryReadIntervalDayTimeResults.getHiveIntervalDayTimeWritable();
-    hiveIntervalDayTimeWritable.set(tempVLong.value, tempVInt.value);
-  }
-
-  /*
-   * TIMESTAMP.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadTimestampResults extends ReadTimestampResults {
-
-    public LazyBinaryReadTimestampResults() {
-      super();
-    }
-
-    public TimestampWritable getTimestampWritable() {
-      return timestampWritable;
-    }
-  }
-
-  // Reading a TIMESTAMP field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different TIMESTAMP field. 
-  @Override
-  public ReadTimestampResults createReadTimestampResults() {
-    return new LazyBinaryReadTimestampResults();
-  }
-
-  @Override
-  public void readTimestamp(ReadTimestampResults readTimestampResults) throws IOException {
-    LazyBinaryReadTimestampResults lazyBinaryReadTimestampResults = (LazyBinaryReadTimestampResults) readTimestampResults;
-    int length = TimestampWritable.getTotalLength(bytes, offset);
-    int saveStart = offset;
-    offset += length;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-
-    // Move past this NOT NULL field.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    TimestampWritable timestampWritable = lazyBinaryReadTimestampResults.getTimestampWritable();
-    timestampWritable.set(bytes, saveStart);
-  }
-
-  /*
-   * DECIMAL.
-   */
-
-  // This class is for internal use.
-  private static class LazyBinaryReadDecimalResults extends ReadDecimalResults {
-
-    public HiveDecimal hiveDecimal;
-
-    public void init(DecimalTypeInfo decimalTypeInfo) {
-      super.init(decimalTypeInfo);
-    }
-
-    @Override
-    public HiveDecimal getHiveDecimal() {
-      return hiveDecimal;
-    }
-  }
-
-  // Reading a DECIMAL field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different DECIMAL field. 
-  @Override
-  public ReadDecimalResults createReadDecimalResults() {
-    return new LazyBinaryReadDecimalResults();
-  }
-
-  @Override
-  public void readHiveDecimal(ReadDecimalResults readDecimalResults) throws IOException {
-    LazyBinaryReadDecimalResults lazyBinaryReadDecimalResults = (LazyBinaryReadDecimalResults) readDecimalResults;
-
-    if (!lazyBinaryReadDecimalResults.isInit()) {
-      lazyBinaryReadDecimalResults.init(saveDecimalTypeInfo);
-    }
-
-    lazyBinaryReadDecimalResults.hiveDecimal = saveDecimal;
-
-    saveDecimal = null;
-    saveDecimalTypeInfo = null;
-  }
-
-  /**
-   * We read the whole HiveDecimal value and then enforce precision and scale, which may
-   * make it a NULL.
-   * @return     Returns true if this HiveDecimal enforced to a NULL.
-   */
-  private boolean earlyReadHiveDecimal() throws EOFException {
-
-    // Since enforcing precision and scale can cause a HiveDecimal to become NULL,
-    // we must read it, enforce it here, and either return NULL or buffer the result.
-
-    // These calls are to see how much data there is. The setFromBytes call below will do the same
-    // readVInt reads but actually unpack the decimal.
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    int saveStart = offset;
-    offset += tempVInt.length;
-    if (offset >= end) {
-      // Overshoot or not enough for next item.
-      warnBeyondEof();
-    }
-    LazyBinaryUtils.readVInt(bytes, offset, tempVInt);
-    offset += tempVInt.length;
-    if (offset >= end) {
-      // Overshoot or not enough for next item.
-      warnBeyondEof();
-    }
-    offset += tempVInt.value;
-    // Last item -- ok to be at end.
-    if (offset > end) {
-      warnBeyondEof();
-    }
-    int length = offset - saveStart;
-
-    if (tempHiveDecimalWritable == null) {
-      tempHiveDecimalWritable = new HiveDecimalWritable();
-    }
-    LazyBinarySerDe.setFromBytes(bytes, saveStart, length,
-        tempHiveDecimalWritable);
-
-    saveDecimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex];
-
-    int precision = saveDecimalTypeInfo.getPrecision();
-    int scale = saveDecimalTypeInfo.getScale();
-
-    saveDecimal = tempHiveDecimalWritable.getHiveDecimal(precision, scale);
-
-    // Move past this field whether it is NULL or NOT NULL.
-    fieldIndex++;
-
-    // Every 8 fields we read a new NULL byte.
-    if (fieldIndex < fieldCount) {
-      if ((fieldIndex % 8) == 0) {
-        // Get next null byte.
-        if (offset >= end) {
-          warnBeyondEof();
-        }
-        nullByte = bytes[offset++];
-      }
-    }
-
-    // Now return whether it is NULL or NOT NULL.
-    return (saveDecimal == null);
-  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
----------------------------------------------------------------------
diff --git a/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java b/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
index fc845a5..e27c6b1 100644
--- a/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
+++ b/serde/src/test/org/apache/hadoop/hive/serde2/VerifyFast.java
@@ -32,8 +32,11 @@ import org.apache.hadoop.hive.common.type.HiveVarchar;
 import org.apache.hadoop.hive.serde2.fast.DeserializeRead;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import org.apache.hadoop.hive.serde2.fast.SerializeWrite;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 import org.apache.hadoop.io.Text;
 
 /**
@@ -58,7 +61,7 @@ public class VerifyFast {
     switch (primitiveTypeInfo.getPrimitiveCategory()) {
       case BOOLEAN:
       {
-        boolean value = deserializeRead.readBoolean();
+        boolean value = deserializeRead.currentBoolean;
         if (!(object instanceof Boolean)) {
           TestCase.fail("Boolean expected object not Boolean");
         }
@@ -70,7 +73,7 @@ public class VerifyFast {
       break;
     case BYTE:
       {
-        byte value = deserializeRead.readByte();
+        byte value = deserializeRead.currentByte;
         if (!(object instanceof Byte)) {
           TestCase.fail("Byte expected object not Byte");
         }
@@ -82,7 +85,7 @@ public class VerifyFast {
       break;
     case SHORT:
       {
-        short value = deserializeRead.readShort();
+        short value = deserializeRead.currentShort;
         if (!(object instanceof Short)) {
           TestCase.fail("Short expected object not Short");
         }
@@ -94,7 +97,7 @@ public class VerifyFast {
       break;
     case INT:
       {
-        int value = deserializeRead.readInt();
+        int value = deserializeRead.currentInt;
         if (!(object instanceof Integer)) {
           TestCase.fail("Integer expected object not Integer");
         }
@@ -106,7 +109,7 @@ public class VerifyFast {
       break;
     case LONG:
       {
-        long value = deserializeRead.readLong();
+        long value = deserializeRead.currentLong;
         if (!(object instanceof Long)) {
           TestCase.fail("Long expected object not Long");
         }
@@ -118,7 +121,7 @@ public class VerifyFast {
       break;
     case FLOAT:
       {
-        float value = deserializeRead.readFloat();
+        float value = deserializeRead.currentFloat;
         Float expected = (Float) object;
         if (!(object instanceof Float)) {
           TestCase.fail("Float expected object not Float");
@@ -130,7 +133,7 @@ public class VerifyFast {
       break;
     case DOUBLE:
       {
-        double value = deserializeRead.readDouble();
+        double value = deserializeRead.currentDouble;
         Double expected = (Double) object;
         if (!(object instanceof Double)) {
           TestCase.fail("Double expected object not Double");
@@ -142,9 +145,10 @@ public class VerifyFast {
       break;
     case STRING:
       {
-        DeserializeRead.ReadStringResults readStringResults = deserializeRead.createReadStringResults();
-        deserializeRead.readString(readStringResults);
-        byte[] stringBytes = Arrays.copyOfRange(readStringResults.bytes, readStringResults.start, readStringResults.start + readStringResults.length);
+        byte[] stringBytes = Arrays.copyOfRange(
+            deserializeRead.currentBytes,
+            deserializeRead.currentBytesStart,
+            deserializeRead.currentBytesStart + deserializeRead.currentBytesLength);
         Text text = new Text(stringBytes);
         String string = text.toString();
         String expected = (String) object;
@@ -155,9 +159,15 @@ public class VerifyFast {
       break;
     case CHAR:
       {
-        DeserializeRead.ReadHiveCharResults readHiveCharResults = deserializeRead.createReadHiveCharResults();
-        deserializeRead.readHiveChar(readHiveCharResults);
-        HiveChar hiveChar = readHiveCharResults.getHiveChar();
+        byte[] stringBytes = Arrays.copyOfRange(
+            deserializeRead.currentBytes,
+            deserializeRead.currentBytesStart,
+            deserializeRead.currentBytesStart + deserializeRead.currentBytesLength);
+        Text text = new Text(stringBytes);
+        String string = text.toString();
+
+        HiveChar hiveChar = new HiveChar(string, ((CharTypeInfo) primitiveTypeInfo).getLength());
+
         HiveChar expected = (HiveChar) object;
         if (!hiveChar.equals(expected)) {
           TestCase.fail("Char field mismatch (expected '" + expected + "' found '" + hiveChar + "')");
@@ -166,9 +176,15 @@ public class VerifyFast {
       break;
     case VARCHAR:
       {
-        DeserializeRead.ReadHiveVarcharResults readHiveVarcharResults = deserializeRead.createReadHiveVarcharResults();
-        deserializeRead.readHiveVarchar(readHiveVarcharResults);
-        HiveVarchar hiveVarchar = readHiveVarcharResults.getHiveVarchar();
+        byte[] stringBytes = Arrays.copyOfRange(
+            deserializeRead.currentBytes,
+            deserializeRead.currentBytesStart,
+            deserializeRead.currentBytesStart + deserializeRead.currentBytesLength);
+        Text text = new Text(stringBytes);
+        String string = text.toString();
+
+        HiveVarchar hiveVarchar = new HiveVarchar(string, ((VarcharTypeInfo) primitiveTypeInfo).getLength());
+
         HiveVarchar expected = (HiveVarchar) object;
         if (!hiveVarchar.equals(expected)) {
           TestCase.fail("Varchar field mismatch (expected '" + expected + "' found '" + hiveVarchar + "')");
@@ -177,9 +193,7 @@ public class VerifyFast {
       break;
     case DECIMAL:
       {
-        DeserializeRead.ReadDecimalResults readDecimalResults = deserializeRead.createReadDecimalResults();
-        deserializeRead.readHiveDecimal(readDecimalResults);
-        HiveDecimal value = readDecimalResults.getHiveDecimal();
+        HiveDecimal value = deserializeRead.currentHiveDecimalWritable.getHiveDecimal();
         if (value == null) {
           TestCase.fail("Decimal field evaluated to NULL");
         }
@@ -194,9 +208,7 @@ public class VerifyFast {
       break;
     case DATE:
       {
-        DeserializeRead.ReadDateResults readDateResults = deserializeRead.createReadDateResults();
-        deserializeRead.readDate(readDateResults);
-        Date value = readDateResults.getDate();
+        Date value = deserializeRead.currentDateWritable.get();
         Date expected = (Date) object;
         if (!value.equals(expected)) {
           TestCase.fail("Date field mismatch (expected " + expected.toString() + " found " + value.toString() + ")");
@@ -205,9 +217,7 @@ public class VerifyFast {
       break;
     case TIMESTAMP:
       {
-        DeserializeRead.ReadTimestampResults readTimestampResults = deserializeRead.createReadTimestampResults();
-        deserializeRead.readTimestamp(readTimestampResults);
-        Timestamp value = readTimestampResults.getTimestamp();
+        Timestamp value = deserializeRead.currentTimestampWritable.getTimestamp();
         Timestamp expected = (Timestamp) object;
         if (!value.equals(expected)) {
           TestCase.fail("Timestamp field mismatch (expected " + expected.toString() + " found " + value.toString() + ")");
@@ -216,9 +226,7 @@ public class VerifyFast {
       break;
     case INTERVAL_YEAR_MONTH:
       {
-        DeserializeRead.ReadIntervalYearMonthResults readIntervalYearMonthResults = deserializeRead.createReadIntervalYearMonthResults();
-        deserializeRead.readIntervalYearMonth(readIntervalYearMonthResults);
-        HiveIntervalYearMonth value = readIntervalYearMonthResults.getHiveIntervalYearMonth();
+        HiveIntervalYearMonth value = deserializeRead.currentHiveIntervalYearMonthWritable.getHiveIntervalYearMonth();
         HiveIntervalYearMonth expected = (HiveIntervalYearMonth) object;
         if (!value.equals(expected)) {
           TestCase.fail("HiveIntervalYearMonth field mismatch (expected " + expected.toString() + " found " + value.toString() + ")");
@@ -227,9 +235,7 @@ public class VerifyFast {
       break;
     case INTERVAL_DAY_TIME:
       {
-        DeserializeRead.ReadIntervalDayTimeResults readIntervalDayTimeResults = deserializeRead.createReadIntervalDayTimeResults();
-        deserializeRead.readIntervalDayTime(readIntervalDayTimeResults);
-        HiveIntervalDayTime value = readIntervalDayTimeResults.getHiveIntervalDayTime();
+        HiveIntervalDayTime value = deserializeRead.currentHiveIntervalDayTimeWritable.getHiveIntervalDayTime();
         HiveIntervalDayTime expected = (HiveIntervalDayTime) object;
         if (!value.equals(expected)) {
           TestCase.fail("HiveIntervalDayTime field mismatch (expected " + expected.toString() + " found " + value.toString() + ")");
@@ -238,9 +244,10 @@ public class VerifyFast {
       break;
     case BINARY:
       {
-        DeserializeRead.ReadBinaryResults readBinaryResults = deserializeRead.createReadBinaryResults();
-        deserializeRead.readBinary(readBinaryResults);
-        byte[] byteArray = Arrays.copyOfRange(readBinaryResults.bytes, readBinaryResults.start, readBinaryResults.start + readBinaryResults.length);
+        byte[] byteArray = Arrays.copyOfRange(
+            deserializeRead.currentBytes,
+            deserializeRead.currentBytesStart,
+            deserializeRead.currentBytesStart + deserializeRead.currentBytesLength);
         byte[] expected = (byte[]) object;
         if (byteArray.length != expected.length){
           TestCase.fail("Byte Array field mismatch (expected " + Arrays.toString(expected)


[12/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out
new file mode 100644
index 0000000..d37d6f5
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out
@@ -0,0 +1,2734 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	true	0004-09-22 18:26:29.519542222	original
+2	1	45	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		2007-02-09 05:17:29.368756876	original
+3	1	NULL	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	6229-06-28 02:54:28.970117179	original
+4	1	1	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	time will come	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=96)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=96)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+              TableScan [TS_0] (rows=6 width=96)
+                default@part_change_various_various_boolean,part_change_various_various_boolean,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+PREHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+POSTHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	true	true	true	true	true	true	true	true	original
+2	1	true	true	true	true	true	true	true	false	true	original
+3	1	NULL	NULL	true	true	true	true	true	true	true	original
+4	1	true	NULL	true	true	true	true	true	true	true	original
+5	2	true	true	false	true	true	false	false	true	false	new
+6	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	true	NULL	new
+PREHOOK: query: drop table part_change_various_various_boolean
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: drop table part_change_various_various_boolean
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=112)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=112)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=112)
+                default@part_change_various_various_tinyint,part_change_various_various_tinyint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+PREHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	-48	-51	-66	-29	119	119	73	73	73	-43	original
+2	1	1	-24	-63	-25	-67	34	34	NULL	NULL	NULL	105	original
+3	1	0	NULL	-66	-38	30	85	85	1	1	1	84	original
+4	1	1	NULL	87	6	34	36	36	-77	-77	-77	60	original
+5	2	23	71	127	1	NULL	-60	68	NULL	NULL	40	93	new
+6	1	NULL	85	-126	NULL	91	113	-28	-63	0	8	NULL	new
+PREHOOK: query: drop table part_change_various_various_tinyint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: drop table part_change_various_various_tinyint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=118)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=118)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=118)
+                default@part_change_various_various_smallint,part_change_various_various_smallint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+PREHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+POSTHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	7373	-32578	-29	119	119	-2999	-2999	-2999	-11819	original
+2	1	1	100	25025	29415	-3651	-19422	-19422	NULL	NULL	NULL	29801	original
+3	1	0	72	-32578	-27686	30	-939	-939	1	1	1	-8620	original
+4	1	1	-90	14935	12294	-19422	9764	9764	5299	5299	5299	-17092	original
+5	2	-30486	15230	3117	1	-117	-7131	20227	-24858	-28771	NULL	NULL	new
+6	1	NULL	NULL	-4844	15507	91	22385	-28	-12268	0	NULL	NULL	new
+PREHOOK: query: drop table part_change_various_various_smallint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: drop table part_change_various_various_smallint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=121)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=121)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=121)
+                default@part_change_various_various_int,part_change_various_various_int,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+PREHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+POSTHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-1888628267	original
+2	1	1	100	NULL	1903063783	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	1272503892	original
+4	1	1	-90	NULL	3289094	46114	9250340	9250340	5299	5299	5299	1021033788	original
+5	2	560930	-1281818	127	1	84269672	-60	27094665	-36016110	-182	3244222	561431	new
+6	1	NULL	NULL	NULL	-167	91	113	-164341325	-134237413	0	6229	NULL	new
+PREHOOK: query: drop table part_change_various_various_int
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: drop table part_change_various_various_int
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	NULL	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	1998287.3541	1998287.3541             	1998287.3541	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=127)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=127)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=127)
+                default@part_change_various_various_bigint,part_change_various_various_bigint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+PREHOOK: Input: default@part_change_various_various_bigint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+POSTHOOK: Input: default@part_change_various_various_bigint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-62018170411	original
+2	1	1	100	NULL	NULL	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	134416490068	original
+4	1	1	-90	NULL	3289094	46114	9250340	9250340	1998287	NULL	NULL	1021033788	original
+5	2	5573199346255528403	71	151775655	1	131	-60	6275638713485623898	-230	-695025	519542222	-29	new
+6	1	NULL	NULL	-126	NULL	91	113	-28	-63	0	3244222	NULL	new
+PREHOOK: query: drop table part_change_various_various_bigint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: drop table part_change_various_various_bigint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_float
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_float
+PREHOOK: query: insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_various_various_float@part=1
+POSTHOOK: query: insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_various_various_float@part=1
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c8 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__16)values__tmp__

<TRUNCATED>

[13/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..b0b00b8
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part_all_complex.q.out
@@ -0,0 +1,669 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=151)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=151)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=6 width=151)
+                default@part_change_various_various_struct1,part_change_various_various_struct1,Tbl:COMPLETE,Col:NONE,Output:["insert_num","s1","b"]
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=8 width=113)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=8 width=113)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=8 width=113)
+                default@part_add_various_various_struct2,part_add_various_various_struct2,Tbl:COMPLETE,Col:NONE,Output:["insert_num","b","s2"]
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=4 width=84)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=4 width=84)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=4 width=84)
+                default@part_add_to_various_various_struct4,part_add_to_various_various_struct4,Tbl:COMPLETE,Col:NONE,Output:["insert_num","b","s3"]
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4


[16/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_table.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_table.q.out
new file mode 100644
index 0000000..50790f4
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_table.q.out
@@ -0,0 +1,4221 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_add_int_permute_select
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: drop table table_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: drop table table_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_add_int_string_permute_select
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c	d
+1	1	original	NULL	NULL
+10	6	new	200	two hundred
+2	2	original	NULL	NULL
+3	3	original	NULL	NULL
+4	4	original	NULL	NULL
+5	1	new	10	ten
+6	2	new	20	twenty
+7	3	new	30	thirty
+8	4	new	40	forty
+9	5	new	100	hundred
+PREHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	c	d
+1	1	NULL	NULL
+10	6	200	two hundred
+2	2	NULL	NULL
+3	3	NULL	NULL
+4	4	NULL	NULL
+5	1	10	ten
+6	2	20	twenty
+7	3	30	thirty
+8	4	40	forty
+9	5	100	hundred
+PREHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	d
+1	1	NULL
+10	6	two hundred
+2	2	NULL
+3	3	NULL
+4	4	NULL
+5	1	ten
+6	2	twenty
+7	3	thirty
+8	4	forty
+9	5	hundred
+PREHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	d
+1	NULL
+10	two hundred
+2	NULL
+3	NULL
+4	NULL
+5	ten
+6	twenty
+7	thirty
+8	forty
+9	hundred
+PREHOOK: query: drop table table_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: drop table table_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_string_group_double
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: double), c2 (type: double), c3 (type: double), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4
+              Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: double), _col2 (type: double), _col3 (type: double), _col4 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: double), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4
+          Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	b
+1	753.7028	753.7028	753.7028	original
+10	9250340.75	9250340.75	9250340.75	new
+2	-3651.672121	-3651.672121	-3651.672121	original
+3	-29.0764	-29.0764	-29.0764	original
+4	-10.3	-10.3	-10.3	original
+5	30.774	30.774	30.774	new
+6	20.31	20.31	20.31	new
+7	46114.284799488	46114.284799488	46114.284799488	new
+8	-66475.561431	-66475.561431	-66475.561431	new
+9	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table table_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: drop table table_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_date_group_string_group_timestamp
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: char(50)), _col3 (type: char(15)), _col4 (type: varchar(50)), _col5 (type: varchar(15)), _col6 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(15)), VALUE._col3 (type: varchar(50)), VALUE._col4 (type: varchar(15)), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	6229-06-28 02:5	6229-06-28 02:54:28.970117179	6229-06-28 02:5	new
+9	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	5966-07-09 03:3	5966-07-09 03:30:50.597	5966-07-09 03:3	new
+PREHOOK: query: drop table table_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table table_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+c1                  	string              	                    
+c2                  	char(50)            	                    
+c3                  	char(15)            	                    
+c4                  	varchar(50)         	                    
+c5                  	varchar(15)         	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	3                   
+	rawDataSize         	195                 
+	totalSize           	198                 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_date_group_string_group_date
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: char(50)), _col3 (type: char(15)), _col4 (type: varchar(50)), _col5 (type: varchar(15)), _col6 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(15)), VALUE._col3 (type: varchar(50)), VALUE._col4 (type: varchar(15)), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table table_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: drop table table_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_numeric_group_string_group_multi_ints_string
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: string), c3 (type: string), c4 (type: string), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+10	17	90000	754072151	3289094	new
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+5	2000	72909	3244222	-93222	new
+6	1	200	2323322	5430907	new
+7	256	32768	31889	470614135	new
+8	5555	40000	-719017797	810662019	new
+9	100	5000	5443	0	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_numeric_group_string_group_multi_ints_char
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: char(50)), c2 (type: char(50)), c3 (type: char(50)), c4 (type: char(50)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: char(50)), _col2 (type: char(50)), _col3 (type: char(50)), _col4 (type: char(50)), _col5 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(50)), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(50)), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45                                    

<TRUNCATED>

[14/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part.q.out
index 44f5822..40c3f47 100644
--- a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part.q.out
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_part.q.out
@@ -1,642 +1,3995 @@
 PREHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Partitioned
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
 --
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned1
+PREHOOK: Output: default@part_add_int_permute_select
 POSTHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Partitioned
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
 PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
+alter table part_add_int_permute_select add columns(c int)
 PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned1
-PREHOOK: Output: default@partitioned1
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
 POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
+alter table part_add_int_permute_select add columns(c int)
 POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@partitioned1@part=2
-POSTHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+PREHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@partitioned1@part=2
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=11)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=11)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=10 width=11)
+                default@part_add_int_permute_select,part_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
 PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
 #### A masked pattern was here ####
 POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
 1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: drop table part_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: drop table part_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
 --
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
 --
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned2
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@partitioned2@part=2
-POSTHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+PREHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@partitioned2@part=2
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select part,a,b from partitioned2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned2
-PREHOOK: Input: default@partitioned2@part=1
-PREHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Input: default@partitioned2@part=1
-POSTHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: --
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=15)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=15)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=10 width=15)
+                default@part_add_int_string_permute_select,part_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c	d
+1	1	1	original	NULL	NULL
+10	1	6	new	NULL	NULL
+2	1	2	original	NULL	NULL
+3	1	3	original	NULL	NULL
+4	1	4	original	NULL	NULL
+5	2	1	new	10	ten
+6	2	2	new	20	twenty
+7	2	3	new	30	thirty
+8	2	4	new	40	forty
+9	1	5	new	NULL	NULL
+PREHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	c	d
+1	1	1	NULL	NULL
+10	1	6	NULL	NULL
+2	1	2	NULL	NULL
+3	1	3	NULL	NULL
+4	1	4	NULL	NULL
+5	2	1	10	ten
+6	2	2	20	twenty
+7	2	3	30	thirty
+8	2	4	40	forty
+9	1	5	NULL	NULL
+PREHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	d
+1	1	1	NULL
+10	1	6	NULL
+2	1	2	NULL
+3	1	3	NULL
+4	1	4	NULL
+5	2	1	ten
+6	2	2	twenty
+7	2	3	thirty
+8	2	4	forty
+9	1	5	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	d
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	ten
+6	2	twenty
+7	2	thirty
+8	2	forty
+9	1	NULL
+PREHOOK: query: drop table part_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: drop table part_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: --
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__7
-PREHOOK: Output: default@partitioned3@part=1
-POSTHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__7
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned3
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned3
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__8
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
+PREHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__8
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Output: default@partitioned3@part=2
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3	_col4
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=55)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=55)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=55)
+                default@part_change_string_group_double,part_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Input: default@part_change_string_group_double@part=1
+PREHOOK: Input: default@part_change_string_group_double@part=2
 #### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
-1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
+POSTHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Input: default@part_change_string_group_double@part=1
+POSTHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	b
+1	1	753.7028	753.7028	753.7028	original
+10	1	9250340.75	9250340.75	9250340.75	new
+2	1	-3651.672121	-3651.672121	-3651.672121	original
+3	1	-29.0764	-29.0764	-29.0764	original
+4	1	-10.3	-10.3	-10.3	original
+5	2	30.774	30.774	30.774	new
+6	2	20.31	20.31	20.31	new
+7	2	46114.284799488	46114.284799488	46114.284799488	new
+8	2	-66475.561431	-66475.561431	-66475.561431	new
+9	1	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table part_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: drop table part_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=9 width=147)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=9 width=147)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+              TableScan [TS_0] (rows=9 width=147)
+                default@part_change_date_group_string_group_timestamp,part_change_date_group_string_group_timestamp,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	1	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	1	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	2	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	2	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	1	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	NULL	6229-06-28 02:54:28.970117179	NULL	new
+9	1	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	NULL	5966-07-09 03:30:50.597	NULL	new
+PREHOOK: query: drop table part_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table part_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
 PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
 --
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned4
+PREHOOK: Output: default@part_change_date_group_string_group_date
 POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
 --
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
 PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__9
-PREHOOK: Output: default@partitioned4@part=1
-POSTHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__9
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
 PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned4
-PREHOOK: Output: default@partitioned4
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
 POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
 PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__10
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__10
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Output: default@partitioned4@part=2
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select part,a,b from partitioned4
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned4
-PREHOOK: Input: default@partitioned4@part=1
-PREHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned4
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Input: default@partitioned4@part=1
-POSTHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: DROP TABLE partitioned1
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=9 width=91)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=9 width=91)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+              TableScan [TS_0] (rows=9 width=91)
+                default@part_change_date_group_string_group_date,part_change_date_group_string_group_date,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	1	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	1	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	2	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	2	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	2	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	2	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table part_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: drop table part_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREA

<TRUNCATED>

[33/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part.q b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part.q
new file mode 100644
index 0000000..5d30b91
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part.q
@@ -0,0 +1,827 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=true;
+SET hive.vectorized.use.row.serde.deserialize=false;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=true;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT);
+DESCRIBE FORMATTED part_add_int_permute_select;
+
+insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int);
+DESCRIBE FORMATTED part_add_int_permute_select;
+
+insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40);
+
+insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200);
+
+explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num;
+select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num;
+select insert_num,part,c from part_add_int_permute_select order by insert_num;
+
+drop table part_add_int_permute_select;
+
+
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT);
+DESCRIBE FORMATTED part_add_int_string_permute_select;
+
+insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string);
+DESCRIBE FORMATTED part_add_int_string_permute_select;
+
+insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty');
+
+insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred');
+
+explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,c from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,d from part_add_int_string_permute_select order by insert_num;
+
+drop table part_add_int_string_permute_select;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING);
+
+insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new');
+
+insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new');
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num;
+
+drop table part_change_string_group_double;
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new');
+insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num;
+
+drop table part_change_date_group_string_group_timestamp;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num;
+
+drop table part_change_date_group_string_group_date;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_char_trunc partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_char_trunc partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_varchar(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), c4 VARCHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_varchar_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar_trunc partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_varchar_trunc replace columns (insert_num int, c1 VARCHAR(5), c2 VARCHAR(5), c3 VARCHAR(5), c4 VARCHAR(5), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar_trunc partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_varchar_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_string(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_string partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, - 832222222, 255, 4957,'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_string partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_string;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_char(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_char partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3,  9000000000, -255, 4957,'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_char partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_char_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_char_trunc partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 832222222, -255, 4957, 'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_char_trunc replace columns (insert_num int, c1 CHAR(7), c2 CHAR(7), c3 CHAR(7), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_char_trunc partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_char_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_varchar(insert_num int, c1 float, c2 double, c3 decimal(38,18), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_varchar partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_varchar partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_varchar_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_varchar_trunc partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_varchar_trunc replace columns (insert_num int, c1 VARCHAR(7), c2 VARCHAR(7), c3 VARCHAR(7), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_varchar_trunc partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_varchar_trunc;
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: STRING, (CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_string_group_string_group_string(insert_num int, c1 string, c2 string, c3 string, c4 string, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_string partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_string replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 VARCHAR(50), c4 CHAR(9), b STRING) ;
+
+insert into table part_change_string_group_string_group_string partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+drop table part_change_string_group_string_group_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: CHAR, (VARCHAR, VARCHAR trunc, STRING)
+--
+CREATE TABLE part_change_string_group_string_group_char(insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_char partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_char replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(9), c3 STRING, b STRING) ;
+
+insert into table part_change_string_group_string_group_char partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+drop table part_change_string_group_string_group_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: VARCHAR, (CHAR, CHAR trunc, STRING)
+--
+CREATE TABLE part_change_string_group_string_group_varchar(insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_varchar partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_varchar replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 STRING, b STRING) ;
+
+insert into table part_change_string_group_string_group_varchar partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+drop table part_change_string_group_string_group_varchar;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: TINYINT, (SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_tinyint(insert_num int, c1 tinyint, c2 tinyint, c3 tinyint, c4 tinyint, c5 tinyint, c6 tinyint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_tinyint partition(part=1)
+    values (1, 45, 45, 45, 45, 45, 45, 'original'),
+           (2, -2, -2, -2, -2, -2, -2, 'original'),
+           (3, -255, -255, -255, -255, -255, -255, 'original'),
+           (4, 100, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_tinyint replace columns (insert_num int, c1 SMALLINT, c2 INT, c3 BIGINT, c4 decimal(38,18), c5 FLOAT, c6 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_tinyint partition(part)
+    values (5, '774', '2031', '200', '12', '99', '0', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', '7', '6', 'new', 2),
+           (7, '256', '32768', '31889', '300', '444', '506', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', '55', '65', 'new', 2),
+           (9, '100', '5000', '5443', '22', '2', '-2', 'new', 1),
+           (10, '17', '90000', '754072151', '95', '20', '18', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_tinyint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: SMALLINT, (INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_smallint(insert_num int, c1 smallint, c2 smallint, c3 smallint, c4 smallint, c5 smallint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_smallint partition(part=1)
+    values (1, 2031, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, -5000, 'original'),
+           (4, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_smallint replace columns (insert_num int, c1 INT, c2 BIGINT, c3 decimal(38,18), c4 FLOAT, c5 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_smallint partition(part)
+    values (5, '774', '2031', '200', '12', '99', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', '7', 'new', 2),
+           (7, '256', '32768', '31889', '300', '444', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', '55', 'new', 2),
+           (9, '100', '5000', '5443', '22', '2', 'new', 1),
+           (10, '17', '90000', '754072151', '95', '20', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_smallint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: INT, (BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_int(insert_num int, c1 int, c2 int, c3 int, c4 int, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_int partition(part=1)
+    values (1, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_int replace columns (insert_num int, c1 BIGINT, c2 decimal(38,18), c3 FLOAT, c4 DOUBLE,  b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_int partition(part)
+    values (5, '774', '2031', '200', '12', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', 'new', 2),
+           (7, '256', '32768', '31889', '300', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', 'new', 2),
+           (9, '100', '5000', '5443', '22', 'new', 1),
+           (10, '17', '90000', '754072151', '95', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_int;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: BIGINT, (DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_bigint(insert_num int, c1 bigint, c2 bigint, c3 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_bigint partition(part=1)
+    values (1, 7203778961, 7203778961, 7203778961, 'original'),
+           (2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_bigint replace columns (insert_num int, c1 decimal(38,18), c2 FLOAT, c3 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_bigint partition(part)
+    values (5, '774', '2031', '200', 'new', 2),
+           (6, '561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_bigint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: DECIMAL, (FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_decimal(insert_num int, c1 decimal(38,18), c2 decimal(38,18), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_decimal partition(part=1)
+    values (1, -29.0764, -29.0764, 'original'),
+           (2, 753.7028, 753.7028, 'original'),
+           (3, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_decimal replace columns (insert_num int, c1 float, c2 double, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_decimal partition(part)
+    values (5, '7.74', '22.3', 'new', 2),
+           (6, '56.1431', '90.9', 'new', 2),
+           (7, '2.56', '25.6', 'new', 2),
+           (8, '555.5', '55.55', 'new', 2),
+           (9, '10.0', '0.100', 'new', 1),
+           (10, '1.7', '17.8888', 'new', 1);
+
+explain
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_decimal;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: FLOAT, (DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_float(insert_num int, c1 float, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_float partition(part=1)
+    values (1, -29.0764, 'original'),
+           (2, 753.7028, 'original'),
+           (3, -5000, 'original'),
+           (4, 52927714, 'original');
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_float replace columns (insert_num int, c1 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_float partition(part)
+    values (5, '774', 'new', 2),
+           (6, '561431', 'new', 2),
+           (7, '256', 'new', 2),
+           (8, '5555', 'new', 2),
+           (9, '100', 'new', 1),
+           (10, '17',  'new', 1);
+
+explain
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_float;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q
new file mode 100644
index 0000000..d188bfd
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q
@@ -0,0 +1,164 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=true;
+SET hive.vectorized.use.row.serde.deserialize=false;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT);
+
+CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt;
+
+insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt;
+
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING);
+
+CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt;
+
+insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt;
+
+CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt;
+
+insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt;
+
+explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+drop table part_change_various_various_struct1;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original');
+
+select insert_num,part,b from part_add_various_various_struct2 order by insert_num;
+
+-- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>);
+
+CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt;
+
+insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt;
+
+CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt;
+
+insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt;
+
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>);
+
+CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt;
+
+insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt;
+
+CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt;
+
+insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt;
+
+explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+drop table part_add_various_various_struct2;
+
+
+
+
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT);
+
+CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt;
+
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>);
+
+CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt;
+
+CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt;
+
+explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+drop table part_add_to_various_various_struct4;


[22/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..7a1ccfe
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out
@@ -0,0 +1,730 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_struct1
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), s1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), _col3 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_various_various_struct2
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_to_various_various_struct4
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4


[19/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part.q.out
new file mode 100644
index 0000000..b53c373
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part.q.out
@@ -0,0 +1,4479 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_int_permute_select
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: drop table part_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: drop table part_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_int_string_permute_select
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c	d
+1	1	1	original	NULL	NULL
+10	1	6	new	NULL	NULL
+2	1	2	original	NULL	NULL
+3	1	3	original	NULL	NULL
+4	1	4	original	NULL	NULL
+5	2	1	new	10	ten
+6	2	2	new	20	twenty
+7	2	3	new	30	thirty
+8	2	4	new	40	forty
+9	1	5	new	NULL	NULL
+PREHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	c	d
+1	1	1	NULL	NULL
+10	1	6	NULL	NULL
+2	1	2	NULL	NULL
+3	1	3	NULL	NULL
+4	1	4	NULL	NULL
+5	2	1	10	ten
+6	2	2	20	twenty
+7	2	3	30	thirty
+8	2	4	40	forty
+9	1	5	NULL	NULL
+PREHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	d
+1	1	1	NULL
+10	1	6	NULL
+2	1	2	NULL
+3	1	3	NULL
+4	1	4	NULL
+5	2	1	ten
+6	2	2	twenty
+7	2	3	thirty
+8	2	4	forty
+9	1	5	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	d
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	ten
+6	2	twenty
+7	2	thirty
+8	2	forty
+9	1	NULL
+PREHOOK: query: drop table part_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: drop table part_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_string_group_double
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: double), c2 (type: double), c3 (type: double), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: double), _col3 (type: double), _col4 (type: double), _col5 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: double), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Input: default@part_change_string_group_double@part=1
+PREHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Input: default@part_change_string_group_double@part=1
+POSTHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	b
+1	1	753.7028	753.7028	753.7028	original
+10	1	9250340.75	9250340.75	9250340.75	new
+2	1	-3651.672121	-3651.672121	-3651.672121	original
+3	1	-29.0764	-29.0764	-29.0764	original
+4	1	-10.3	-10.3	-10.3	original
+5	2	30.774	30.774	30.774	new
+6	2	20.31	20.31	20.31	new
+7	2	46114.284799488	46114.284799488	46114.284799488	new
+8	2	-66475.561431	-66475.561431	-66475.561431	new
+9	1	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table part_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: drop table part_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_date_group_string_group_timestamp
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+              Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: char(50)), _col4 (type: char(15)), _col5 (type: varchar(50)), _col6 (type: varchar(15)), _col7 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(15)), VALUE._col4 (type: varchar(50)), VALUE._col5 (type: varchar(15)), VALUE._col6 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+          Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	1	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	1	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	2	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	2	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	1	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	NULL	6229-06-28 02:54:28.970117179	NULL	new
+9	1	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	NULL	5966-07-09 03:30:50.597	NULL	new
+PREHOOK: query: drop table part_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table part_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_date_group_string_group_date
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+              Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: char(50)), _col4 (type: char(15)), _col5 (type: varchar(50)), _col6 (type: varchar(15)), _col7 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(15)), VALUE._col4 (type: varchar(50)), VALUE._col5 (type: varchar(15)), VALUE._col6 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+          Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	1	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	1	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	2	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	2	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	2	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	2	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table part_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: drop table part_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_numeric_group_string_group_multi_ints_string
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: string), c3 (type: string), c4 (type: string), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: string), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+10	1	17	NULL	754072151	3289094	new
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+5	2	2000	72909	3244222	-93222	new
+6	2	1	200	2323322	5430907	new
+7	2	256	32768	31889	470614135	new
+8	2	5555	40000	-719017797	810662019	new
+9	1	100	5000	5443	0	new
+PREHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_gr

<TRUNCATED>

[31/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part.q b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part.q
new file mode 100644
index 0000000..086ebd2
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part.q
@@ -0,0 +1,827 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=true;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=true;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT);
+DESCRIBE FORMATTED part_add_int_permute_select;
+
+insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int);
+DESCRIBE FORMATTED part_add_int_permute_select;
+
+insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40);
+
+insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200);
+
+explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num;
+select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num;
+select insert_num,part,c from part_add_int_permute_select order by insert_num;
+
+drop table part_add_int_permute_select;
+
+
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT);
+DESCRIBE FORMATTED part_add_int_string_permute_select;
+
+insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string);
+DESCRIBE FORMATTED part_add_int_string_permute_select;
+
+insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty');
+
+insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred');
+
+explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,c from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,d from part_add_int_string_permute_select order by insert_num;
+
+drop table part_add_int_string_permute_select;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING);
+
+insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new');
+
+insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new');
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num;
+
+drop table part_change_string_group_double;
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new');
+insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num;
+
+drop table part_change_date_group_string_group_timestamp;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num;
+
+drop table part_change_date_group_string_group_date;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_char_trunc partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_char_trunc partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_varchar(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), c4 VARCHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_varchar_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar_trunc partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_varchar_trunc replace columns (insert_num int, c1 VARCHAR(5), c2 VARCHAR(5), c3 VARCHAR(5), c4 VARCHAR(5), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar_trunc partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_varchar_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_string(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_string partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, - 832222222, 255, 4957,'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_string partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_string;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_char(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_char partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3,  9000000000, -255, 4957,'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_char partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_char_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_char_trunc partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 832222222, -255, 4957, 'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_char_trunc replace columns (insert_num int, c1 CHAR(7), c2 CHAR(7), c3 CHAR(7), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_char_trunc partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_char_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_varchar(insert_num int, c1 float, c2 double, c3 decimal(38,18), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_varchar partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_varchar partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_varchar_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_varchar_trunc partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_varchar_trunc replace columns (insert_num int, c1 VARCHAR(7), c2 VARCHAR(7), c3 VARCHAR(7), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_varchar_trunc partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_varchar_trunc;
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: STRING, (CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_string_group_string_group_string(insert_num int, c1 string, c2 string, c3 string, c4 string, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_string partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_string replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 VARCHAR(50), c4 CHAR(9), b STRING) ;
+
+insert into table part_change_string_group_string_group_string partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+drop table part_change_string_group_string_group_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: CHAR, (VARCHAR, VARCHAR trunc, STRING)
+--
+CREATE TABLE part_change_string_group_string_group_char(insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_char partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_char replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(9), c3 STRING, b STRING) ;
+
+insert into table part_change_string_group_string_group_char partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+drop table part_change_string_group_string_group_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: VARCHAR, (CHAR, CHAR trunc, STRING)
+--
+CREATE TABLE part_change_string_group_string_group_varchar(insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_varchar partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_varchar replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 STRING, b STRING) ;
+
+insert into table part_change_string_group_string_group_varchar partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+drop table part_change_string_group_string_group_varchar;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: TINYINT, (SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_tinyint(insert_num int, c1 tinyint, c2 tinyint, c3 tinyint, c4 tinyint, c5 tinyint, c6 tinyint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_tinyint partition(part=1)
+    values (1, 45, 45, 45, 45, 45, 45, 'original'),
+           (2, -2, -2, -2, -2, -2, -2, 'original'),
+           (3, -255, -255, -255, -255, -255, -255, 'original'),
+           (4, 100, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_tinyint replace columns (insert_num int, c1 SMALLINT, c2 INT, c3 BIGINT, c4 decimal(38,18), c5 FLOAT, c6 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_tinyint partition(part)
+    values (5, '774', '2031', '200', '12', '99', '0', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', '7', '6', 'new', 2),
+           (7, '256', '32768', '31889', '300', '444', '506', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', '55', '65', 'new', 2),
+           (9, '100', '5000', '5443', '22', '2', '-2', 'new', 1),
+           (10, '17', '90000', '754072151', '95', '20', '18', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_tinyint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: SMALLINT, (INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_smallint(insert_num int, c1 smallint, c2 smallint, c3 smallint, c4 smallint, c5 smallint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_smallint partition(part=1)
+    values (1, 2031, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, -5000, 'original'),
+           (4, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_smallint replace columns (insert_num int, c1 INT, c2 BIGINT, c3 decimal(38,18), c4 FLOAT, c5 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_smallint partition(part)
+    values (5, '774', '2031', '200', '12', '99', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', '7', 'new', 2),
+           (7, '256', '32768', '31889', '300', '444', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', '55', 'new', 2),
+           (9, '100', '5000', '5443', '22', '2', 'new', 1),
+           (10, '17', '90000', '754072151', '95', '20', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_smallint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: INT, (BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_int(insert_num int, c1 int, c2 int, c3 int, c4 int, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_int partition(part=1)
+    values (1, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_int replace columns (insert_num int, c1 BIGINT, c2 decimal(38,18), c3 FLOAT, c4 DOUBLE,  b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_int partition(part)
+    values (5, '774', '2031', '200', '12', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', 'new', 2),
+           (7, '256', '32768', '31889', '300', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', 'new', 2),
+           (9, '100', '5000', '5443', '22', 'new', 1),
+           (10, '17', '90000', '754072151', '95', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_int;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: BIGINT, (DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_bigint(insert_num int, c1 bigint, c2 bigint, c3 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_bigint partition(part=1)
+    values (1, 7203778961, 7203778961, 7203778961, 'original'),
+           (2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_bigint replace columns (insert_num int, c1 decimal(38,18), c2 FLOAT, c3 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_bigint partition(part)
+    values (5, '774', '2031', '200', 'new', 2),
+           (6, '561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_bigint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: DECIMAL, (FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_decimal(insert_num int, c1 decimal(38,18), c2 decimal(38,18), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_decimal partition(part=1)
+    values (1, -29.0764, -29.0764, 'original'),
+           (2, 753.7028, 753.7028, 'original'),
+           (3, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_decimal replace columns (insert_num int, c1 float, c2 double, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_decimal partition(part)
+    values (5, '7.74', '22.3', 'new', 2),
+           (6, '56.1431', '90.9', 'new', 2),
+           (7, '2.56', '25.6', 'new', 2),
+           (8, '555.5', '55.55', 'new', 2),
+           (9, '10.0', '0.100', 'new', 1),
+           (10, '1.7', '17.8888', 'new', 1);
+
+explain
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_decimal;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: FLOAT, (DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_float(insert_num int, c1 float, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_float partition(part=1)
+    values (1, -29.0764, 'original'),
+           (2, 753.7028, 'original'),
+           (3, -5000, 'original'),
+           (4, 52927714, 'original');
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_float replace columns (insert_num int, c1 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_float partition(part)
+    values (5, '774', 'new', 2),
+           (6, '561431', 'new', 2),
+           (7, '256', 'new', 2),
+           (8, '5555', 'new', 2),
+           (9, '100', 'new', 1),
+           (10, '17',  'new', 1);
+
+explain
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_float;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q
new file mode 100644
index 0000000..2553527
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q
@@ -0,0 +1,165 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=true;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT);
+
+CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt;
+
+insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt;
+
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING);
+
+CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt;
+
+insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt;
+
+CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt;
+
+insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt;
+
+explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+drop table part_change_various_various_struct1;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original');
+
+select insert_num,part,b from part_add_various_various_struct2 order by insert_num;
+
+-- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>);
+
+CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt;
+
+insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt;
+
+CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt;
+
+insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt;
+
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>);
+
+CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt;
+
+insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt;
+
+CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt;
+
+insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt;
+
+explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+drop table part_add_various_various_struct2;
+
+
+
+
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT);
+
+CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt;
+
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>);
+
+CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt;
+
+CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt;
+
+explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+drop table part_add_to_various_various_struct4;


[28/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_part.q.out b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_part.q.out
deleted file mode 100644
index 44ce24e..0000000
--- a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_part.q.out
+++ /dev/null
@@ -1,642 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, FetchWork, Partitioned
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, FetchWork, Partitioned
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned1
-PREHOOK: Output: default@partitioned1
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@partitioned1@part=2
-POSTHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@partitioned1@part=2
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
-1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned2
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@partitioned2@part=2
-POSTHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@partitioned2@part=2
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select part,a,b from partitioned2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned2
-PREHOOK: Input: default@partitioned2@part=1
-PREHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Input: default@partitioned2@part=1
-POSTHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: --
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: --
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__7
-PREHOOK: Output: default@partitioned3@part=1
-POSTHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__7
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned3
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned3
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__8
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__8
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Output: default@partitioned3@part=2
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3	_col4
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
-1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__9
-PREHOOK: Output: default@partitioned4@part=1
-POSTHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__9
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned4
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__10
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__10
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Output: default@partitioned4@part=2
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select part,a,b from partitioned4
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned4
-PREHOOK: Input: default@partitioned4@part=1
-PREHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned4
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Input: default@partitioned4@part=1
-POSTHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: DROP TABLE partitioned1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned1
-PREHOOK: Output: default@partitioned1
-POSTHOOK: query: DROP TABLE partitioned1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: DROP TABLE partitioned2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned2
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: DROP TABLE partitioned2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: DROP TABLE partitioned3
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned3
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: DROP TABLE partitioned3
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned3
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: DROP TABLE partitioned4
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned4
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: DROP TABLE partitioned4
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Output: default@partitioned4

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_table.q.out b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_table.q.out
deleted file mode 100644
index 4003c20..0000000
--- a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_fetchwork_table.q.out
+++ /dev/null
@@ -1,297 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	original
-2	original
-3	original
-4	original
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: select a,b,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: table1.e SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
-_col0	_col1	_col2	_col3	_col4
-PREHOOK: query: select a,b,c,d,e from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d,e from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d	e
-1	new	10	ten	NULL
-1	original	NULL	NULL	NULL
-2	new	20	twenty	NULL
-2	original	NULL	NULL	NULL
-3	new	30	thirty	NULL
-3	original	NULL	NULL	NULL
-4	new	40	forty	NULL
-4	original	NULL	NULL	NULL
-5	new	100	hundred	another1
-6	new	200	two hundred	another2
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table3
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-3	original
-4	original
-6737	original
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-6737	original
-72909	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table3.e SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: DROP TABLE table1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: DROP TABLE table2
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE table2
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE table3
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: DROP TABLE table3
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3


[02/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/vector_orc_string_reader_empty_dict.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vector_orc_string_reader_empty_dict.q.out b/ql/src/test/results/clientpositive/tez/vector_orc_string_reader_empty_dict.q.out
new file mode 100644
index 0000000..4f00bed
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/vector_orc_string_reader_empty_dict.q.out
@@ -0,0 +1,62 @@
+PREHOOK: query: create table orcstr (vcol varchar(20)) stored as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@orcstr
+POSTHOOK: query: create table orcstr (vcol varchar(20)) stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@orcstr
+PREHOOK: query: insert overwrite table orcstr select null from src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@orcstr
+POSTHOOK: query: insert overwrite table orcstr select null from src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@orcstr
+POSTHOOK: Lineage: orcstr.vcol EXPRESSION []
+PREHOOK: query: select vcol from orcstr limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+POSTHOOK: query: select vcol from orcstr limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: select vcol from orcstr limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+POSTHOOK: query: select vcol from orcstr limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+NULL
+PREHOOK: query: insert overwrite table orcstr select "" from src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@orcstr
+POSTHOOK: query: insert overwrite table orcstr select "" from src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@orcstr
+POSTHOOK: Lineage: orcstr.vcol EXPRESSION []
+PREHOOK: query: select vcol from orcstr limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+POSTHOOK: query: select vcol from orcstr limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+
+PREHOOK: query: select vcol from orcstr limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+POSTHOOK: query: select vcol from orcstr limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orcstr
+#### A masked pattern was here ####
+

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out b/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out
index a733991..f23a359 100644
--- a/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out
+++ b/ql/src/test/results/clientpositive/tez/vector_partition_diff_num_cols.q.out
@@ -592,6 +592,7 @@ STAGE PLANS:
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col0 (type: bigint)
+            Execution mode: vectorized
         Reducer 2 
             Execution mode: vectorized
             Reduce Operator Tree:

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/vector_tablesample_rows.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vector_tablesample_rows.q.out b/ql/src/test/results/clientpositive/tez/vector_tablesample_rows.q.out
new file mode 100644
index 0000000..b2bf415
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/vector_tablesample_rows.q.out
@@ -0,0 +1,307 @@
+PREHOOK: query: explain
+select 'key1', 'value1' from alltypesorc tablesample (1 rows)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select 'key1', 'value1' from alltypesorc tablesample (1 rows)
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: alltypesorc
+                  Row Limit Per Split: 1
+                  Statistics: Num rows: 12288 Data size: 2641964 Basic stats: COMPLETE Column stats: COMPLETE
+                  Select Operator
+                    expressions: 'key1' (type: string), 'value1' (type: string)
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 12288 Data size: 2187264 Basic stats: COMPLETE Column stats: COMPLETE
+                    File Output Operator
+                      compressed: false
+                      Statistics: Num rows: 12288 Data size: 2187264 Basic stats: COMPLETE Column stats: COMPLETE
+                      table:
+                          input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                          output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                          serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+            Execution mode: vectorized
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select 'key1', 'value1' from alltypesorc tablesample (1 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@alltypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select 'key1', 'value1' from alltypesorc tablesample (1 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@alltypesorc
+#### A masked pattern was here ####
+_c0	_c1
+key1	value1
+PREHOOK: query: create table decimal_2 (t decimal(18,9)) stored as orc
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@decimal_2
+POSTHOOK: query: create table decimal_2 (t decimal(18,9)) stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@decimal_2
+PREHOOK: query: explain
+insert overwrite table decimal_2
+  select cast('17.29' as decimal(4,2)) from alltypesorc tablesample (1 rows)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+insert overwrite table decimal_2
+  select cast('17.29' as decimal(4,2)) from alltypesorc tablesample (1 rows)
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
+  Stage-3 depends on stages: Stage-0
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: alltypesorc
+                  Row Limit Per Split: 1
+                  Statistics: Num rows: 12288 Data size: 2641964 Basic stats: COMPLETE Column stats: COMPLETE
+                  Select Operator
+                    expressions: 17.29 (type: decimal(18,9))
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 12288 Data size: 1376256 Basic stats: COMPLETE Column stats: COMPLETE
+                    File Output Operator
+                      compressed: false
+                      Statistics: Num rows: 12288 Data size: 1376256 Basic stats: COMPLETE Column stats: COMPLETE
+                      table:
+                          input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+                          output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+                          serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+                          name: default.decimal_2
+            Execution mode: vectorized
+
+  Stage: Stage-2
+    Dependency Collection
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+          replace: true
+          table:
+              input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
+              output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
+              serde: org.apache.hadoop.hive.ql.io.orc.OrcSerde
+              name: default.decimal_2
+
+  Stage: Stage-3
+    Stats-Aggr Operator
+
+PREHOOK: query: insert overwrite table decimal_2
+  select cast('17.29' as decimal(4,2)) from alltypesorc tablesample (1 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@alltypesorc
+PREHOOK: Output: default@decimal_2
+POSTHOOK: query: insert overwrite table decimal_2
+  select cast('17.29' as decimal(4,2)) from alltypesorc tablesample (1 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@alltypesorc
+POSTHOOK: Output: default@decimal_2
+POSTHOOK: Lineage: decimal_2.t EXPRESSION []
+_col0
+PREHOOK: query: select count(*) from decimal_2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_2
+#### A masked pattern was here ####
+POSTHOOK: query: select count(*) from decimal_2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_2
+#### A masked pattern was here ####
+c0
+1
+PREHOOK: query: drop table decimal_2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@decimal_2
+PREHOOK: Output: default@decimal_2
+POSTHOOK: query: drop table decimal_2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@decimal_2
+POSTHOOK: Output: default@decimal_2
+PREHOOK: query: -- Dummy tables HIVE-13190
+explain
+select count(1) from (select * from (Select 1 a) x order by x.a) y
+PREHOOK: type: QUERY
+POSTHOOK: query: -- Dummy tables HIVE-13190
+explain
+select count(1) from (select * from (Select 1 a) x order by x.a) y
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: _dummy_table
+                  Row Limit Per Split: 1
+                  Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
+                  Select Operator
+                    Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
+                    Reduce Output Operator
+                      key expressions: 1 (type: int)
+                      sort order: +
+                      Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
+        Reducer 2 
+            Execution mode: vectorized
+            Reduce Operator Tree:
+              Select Operator
+                Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
+                Group By Operator
+                  aggregations: count(1)
+                  mode: hash
+                  outputColumnNames: _col0
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                  Reduce Output Operator
+                    sort order: 
+                    Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                    value expressions: _col0 (type: bigint)
+        Reducer 3 
+            Execution mode: vectorized
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: count(VALUE._col0)
+                mode: mergepartial
+                outputColumnNames: _col0
+                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select count(1) from (select * from (Select 1 a) x order by x.a) y
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select count(1) from (select * from (Select 1 a) x order by x.a) y
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+_c0
+1
+PREHOOK: query: explain
+create temporary table dual as select 1
+PREHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: query: explain
+create temporary table dual as select 1
+POSTHOOK: type: CREATETABLE_AS_SELECT
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-4 depends on stages: Stage-2, Stage-0
+  Stage-3 depends on stages: Stage-4
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: _dummy_table
+                  Row Limit Per Split: 1
+                  Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
+                  Select Operator
+                    expressions: 1 (type: int)
+                    outputColumnNames: _col0
+                    Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
+                    File Output Operator
+                      compressed: false
+                      Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
+                      table:
+                          input format: org.apache.hadoop.mapred.TextInputFormat
+                          output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                          serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                          name: default.dual
+
+  Stage: Stage-2
+    Dependency Collection
+
+  Stage: Stage-4
+      Create Table Operator:
+        Create Table
+          columns: _c0 int
+          input format: org.apache.hadoop.mapred.TextInputFormat
+#### A masked pattern was here ####
+          output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+          serde name: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+          name: default.dual
+          isTemporary: true
+
+  Stage: Stage-3
+    Stats-Aggr Operator
+
+  Stage: Stage-0
+    Move Operator
+      files:
+          hdfs directory: true
+#### A masked pattern was here ####
+
+PREHOOK: query: create temporary table dual as select 1
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: database:default
+PREHOOK: Output: default@dual
+POSTHOOK: query: create temporary table dual as select 1
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@dual
+_c0
+PREHOOK: query: select * from dual
+PREHOOK: type: QUERY
+PREHOOK: Input: default@dual
+#### A masked pattern was here ####
+POSTHOOK: query: select * from dual
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@dual
+#### A masked pattern was here ####
+dual._c0
+1

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out b/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out
index a783a36..ef92b89 100644
--- a/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out
+++ b/ql/src/test/results/clientpositive/vector_partition_diff_num_cols.q.out
@@ -554,6 +554,7 @@ STAGE PLANS:
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: bigint)
+      Execution mode: vectorized
       Reduce Operator Tree:
         Group By Operator
           aggregations: sum(VALUE._col0)

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/vector_tablesample_rows.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_tablesample_rows.q.out b/ql/src/test/results/clientpositive/vector_tablesample_rows.q.out
index 25f2996..7e5f24d 100644
--- a/ql/src/test/results/clientpositive/vector_tablesample_rows.q.out
+++ b/ql/src/test/results/clientpositive/vector_tablesample_rows.q.out
@@ -195,7 +195,6 @@ STAGE PLANS:
                 key expressions: 1 (type: int)
                 sort order: +
                 Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
-      Execution mode: vectorized
       Reduce Operator Tree:
         Select Operator
           Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETE
@@ -287,7 +286,6 @@ STAGE PLANS:
                     output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
                     serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
                     name: default.dual
-      Execution mode: vectorized
 
   Stage: Stage-7
     Conditional Operator

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java b/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java
index c6ff748..be36ba4 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/binarysortable/fast/BinarySortableDeserializeRead.java
@@ -18,7 +18,6 @@
 
 package org.apache.hadoop.hive.serde2.binarysortable.fast;
 
-import java.io.EOFException;
 import java.io.IOException;
 import java.math.BigInteger;
 import java.util.Arrays;
@@ -29,21 +28,10 @@ import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.serde2.binarysortable.BinarySortableSerDe;
 import org.apache.hadoop.hive.serde2.binarysortable.InputByteBuffer;
 import org.apache.hadoop.hive.serde2.fast.DeserializeRead;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
-import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
-import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
-import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
-import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
 import org.apache.hadoop.hive.serde2.io.TimestampWritable;
-import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableHiveDecimalObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 import org.apache.hadoop.io.Text;
 
 /*
@@ -60,11 +48,9 @@ import org.apache.hadoop.io.Text;
  * other type specific buffers.  So, those references are only valid until the next time set is
  * called.
  */
-public final class BinarySortableDeserializeRead implements DeserializeRead {
+public final class BinarySortableDeserializeRead extends DeserializeRead {
   public static final Logger LOG = LoggerFactory.getLogger(BinarySortableDeserializeRead.class.getName());
 
-  private TypeInfo[] typeInfos;
-
   // The sort order (ascending/descending) for each field. Set to true when descending (invert).
   private boolean[] columnSortOrderIsDesc;
 
@@ -76,11 +62,10 @@ public final class BinarySortableDeserializeRead implements DeserializeRead {
 
   private int start;
 
-  private DecimalTypeInfo saveDecimalTypeInfo;
-  private HiveDecimal saveDecimal;
+  private byte[] tempTimestampBytes;
+  private Text tempText;
 
   private byte[] tempDecimalBuffer;
-  private HiveDecimalWritable tempHiveDecimalWritable;
 
   private boolean readBeyondConfiguredFieldsWarned;
   private boolean readBeyondBufferRangeWarned;
@@ -97,7 +82,7 @@ public final class BinarySortableDeserializeRead implements DeserializeRead {
 
   public BinarySortableDeserializeRead(TypeInfo[] typeInfos,
           boolean[] columnSortOrderIsDesc) {
-    this.typeInfos = typeInfos;
+    super(typeInfos);
     fieldCount = typeInfos.length;
     if (columnSortOrderIsDesc != null) {
       this.columnSortOrderIsDesc = columnSortOrderIsDesc;
@@ -113,13 +98,7 @@ public final class BinarySortableDeserializeRead implements DeserializeRead {
 
   // Not public since we must have column information.
   private BinarySortableDeserializeRead() {
-  }
-
-  /*
-   * The primitive type information for all fields.
-   */
-  public TypeInfo[] typeInfos() {
-    return typeInfos;
+    super();
   }
 
   /*
@@ -148,42 +127,242 @@ public final class BinarySortableDeserializeRead implements DeserializeRead {
     if (fieldIndex >= fieldCount) {
       // Reading beyond the specified field count produces NULL.
       if (!readBeyondConfiguredFieldsWarned) {
-        // Warn only once.
-        LOG.info("Reading beyond configured fields! Configured " + fieldCount + " fields but "
-            + " reading more (NULLs returned).  Ignoring similar problems.");
-        readBeyondConfiguredFieldsWarned = true;
+        doReadBeyondConfiguredFieldsWarned();
       }
       return true;
     }
     if (inputByteBuffer.isEof()) {
       // Also, reading beyond our byte range produces NULL.
       if (!readBeyondBufferRangeWarned) {
-        // Warn only once.
-        int length = inputByteBuffer.tell() - start;
-        LOG.info("Reading beyond buffer range! Buffer range " +  start 
-            + " for length " + length + " but reading more... "
-            + "(total buffer length " + inputByteBuffer.getData().length + ")"
-            + "  Ignoring similar problems.");
-        readBeyondBufferRangeWarned = true;
+        doReadBeyondBufferRangeWarned();
       }
       // We cannot read beyond so we must return NULL here.
       return true;
     }
-    byte isNull = inputByteBuffer.read(columnSortOrderIsDesc[fieldIndex]);
+    byte isNullByte = inputByteBuffer.read(columnSortOrderIsDesc[fieldIndex]);
 
-    if (isNull == 0) {
+    if (isNullByte == 0) {
       return true;
     }
 
-    // We have a field and are positioned to it.
+    /*
+     * We have a field and are positioned to it.  Read it.
+     */
+    boolean isNull = false;    // Assume.
+    switch (primitiveCategories[fieldIndex]) {
+    case BOOLEAN:
+      currentBoolean = (inputByteBuffer.read(columnSortOrderIsDesc[fieldIndex]) == 2);
+      break;
+    case BYTE:
+      currentByte = (byte) (inputByteBuffer.read(columnSortOrderIsDesc[fieldIndex]) ^ 0x80);
+      break;
+    case SHORT:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        int v = inputByteBuffer.read(invert) ^ 0x80;
+        v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        currentShort = (short) v;
+      }
+      break;
+    case INT:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        int v = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 3; i++) {
+          v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        currentInt = v;
+      }
+      break;
+    case LONG:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        long v = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 7; i++) {
+          v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        currentLong = v;
+      }
+      break;
+    case DATE:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        int v = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 3; i++) {
+          v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        currentDateWritable.set(v);
+      }
+      break;
+    case TIMESTAMP:
+      {
+        if (tempTimestampBytes == null) {
+          tempTimestampBytes = new byte[TimestampWritable.BINARY_SORTABLE_LENGTH];
+        }
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        for (int i = 0; i < tempTimestampBytes.length; i++) {
+          tempTimestampBytes[i] = inputByteBuffer.read(invert);
+        }
+        currentTimestampWritable.setBinarySortable(tempTimestampBytes, 0);
+      }
+      break;
+    case FLOAT:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        int v = 0;
+        for (int i = 0; i < 4; i++) {
+          v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        if ((v & (1 << 31)) == 0) {
+          // negative number, flip all bits
+          v = ~v;
+        } else {
+          // positive number, flip the first bit
+          v = v ^ (1 << 31);
+        }
+        currentFloat = Float.intBitsToFloat(v);
+      }
+      break;
+    case DOUBLE:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        long v = 0;
+        for (int i = 0; i < 8; i++) {
+          v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        if ((v & (1L << 63)) == 0) {
+          // negative number, flip all bits
+          v = ~v;
+        } else {
+          // positive number, flip the first bit
+          v = v ^ (1L << 63);
+        }
+        currentDouble = Double.longBitsToDouble(v);
+      }
+      break;
+    case BINARY:
+    case STRING:
+    case CHAR:
+    case VARCHAR:
+      {
+        if (tempText == null) {
+          tempText = new Text();
+        }
+        BinarySortableSerDe.deserializeText(
+            inputByteBuffer, columnSortOrderIsDesc[fieldIndex], tempText);
+        currentBytes = tempText.getBytes();
+        currentBytesStart = 0;
+        currentBytesLength = tempText.getLength();
+      }
+      break;
+    case INTERVAL_YEAR_MONTH:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        int v = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 3; i++) {
+          v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        currentHiveIntervalYearMonthWritable.set(v);
+      }
+      break;
+    case INTERVAL_DAY_TIME:
+      {
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        long totalSecs = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 7; i++) {
+          totalSecs = (totalSecs << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        int nanos = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 3; i++) {
+          nanos = (nanos << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+        currentHiveIntervalDayTimeWritable.set(totalSecs, nanos);
+      }
+      break;
+    case DECIMAL:
+      {
+        // Since enforcing precision and scale can cause a HiveDecimal to become NULL,
+        // we must read it, enforce it here, and either return NULL or buffer the result.
+
+        final boolean invert = columnSortOrderIsDesc[fieldIndex];
+        int b = inputByteBuffer.read(invert) - 1;
+        assert (b == 1 || b == -1 || b == 0);
+        boolean positive = b != -1;
+
+        int factor = inputByteBuffer.read(invert) ^ 0x80;
+        for (int i = 0; i < 3; i++) {
+          factor = (factor << 8) + (inputByteBuffer.read(invert) & 0xff);
+        }
+
+        if (!positive) {
+          factor = -factor;
+        }
+
+        int start = inputByteBuffer.tell();
+        int length = 0;
+
+        do {
+          b = inputByteBuffer.read(positive ? invert : !invert);
+          assert(b != 1);
+
+          if (b == 0) {
+            // end of digits
+            break;
+          }
+
+          length++;
+        } while (true);
+
+        if(tempDecimalBuffer == null || tempDecimalBuffer.length < length) {
+          tempDecimalBuffer = new byte[length];
+        }
+
+        inputByteBuffer.seek(start);
+        for (int i = 0; i < length; ++i) {
+          tempDecimalBuffer[i] = inputByteBuffer.read(positive ? invert : !invert);
+        }
+
+        // read the null byte again
+        inputByteBuffer.read(positive ? invert : !invert);
+
+        String digits = new String(tempDecimalBuffer, 0, length, BinarySortableSerDe.decimalCharSet);
+        BigInteger bi = new BigInteger(digits);
+        HiveDecimal bd = HiveDecimal.create(bi).scaleByPowerOfTen(factor-length);
+
+        if (!positive) {
+          bd = bd.negate();
+        }
+
+        // We have a decimal.  After we enforce precision and scale, will it become a NULL?
+
+        currentHiveDecimalWritable.set(bd);
 
-    if (((PrimitiveTypeInfo) typeInfos[fieldIndex]).getPrimitiveCategory() != PrimitiveCategory.DECIMAL) {
-      return false;
+        DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex];
+
+        int precision = decimalTypeInfo.getPrecision();
+        int scale = decimalTypeInfo.getScale();
+
+        HiveDecimal decimal = currentHiveDecimalWritable.getHiveDecimal(precision, scale);
+        if (decimal == null) {
+          isNull = true;
+        } else {
+          // Put value back into writable.
+          currentHiveDecimalWritable.set(decimal);
+        }
+      }
+      break;
+    default:
+      throw new RuntimeException("Unexpected primitive type category " + primitiveCategories[fieldIndex]);
+    }
+
+    /*
+     * Now that we have read through the field -- did we really want it?
+     */
+    if (columnsToInclude != null && !columnsToInclude[fieldIndex]) {
+      isNull = true;
     }
 
-    // Since enforcing precision and scale may turn a HiveDecimal into a NULL, we must read
-    // it here.
-    return earlyReadHiveDecimal();
+    return isNull;
   }
 
   /*
@@ -196,7 +375,7 @@ public final class BinarySortableDeserializeRead implements DeserializeRead {
         // Warn only once.
        int length = inputByteBuffer.getEnd() - start;
        int remaining = inputByteBuffer.getEnd() - inputByteBuffer.tell();
-        LOG.info("Not all fields were read in the buffer range! Buffer range " +  start 
+        LOG.info("Not all fields were read in the buffer range! Buffer range " +  start
             + " for length " + length + " but " + remaining + " bytes remain. "
             + "(total buffer length " + inputByteBuffer.getData().length + ")"
             + "  Ignoring similar problems.");
@@ -222,526 +401,23 @@ public final class BinarySortableDeserializeRead implements DeserializeRead {
   }
 
   /*
-   * BOOLEAN.
-   */
-  @Override
-  public boolean readBoolean() throws IOException {
-    byte b = inputByteBuffer.read(columnSortOrderIsDesc[fieldIndex]);
-    return (b == 2);
-  }
-
-  /*
-   * BYTE.
-   */
-  @Override
-  public byte readByte() throws IOException {
-    return (byte) (inputByteBuffer.read(columnSortOrderIsDesc[fieldIndex]) ^ 0x80);
-  }
-
-  /*
-   * SHORT.
-   */
-  @Override
-  public short readShort() throws IOException {
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    int v = inputByteBuffer.read(invert) ^ 0x80;
-    v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    return (short) v;
-  }
-
-  /*
-   * INT.
-   */
-  @Override
-  public int readInt() throws IOException {
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    int v = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 3; i++) {
-      v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    return v;
-  }
-
-  /*
-   * LONG.
-   */
-  @Override
-  public long readLong() throws IOException {
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    long v = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 7; i++) {
-      v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    return v;
-  }
-
-  /*
-   * FLOAT.
+   * Pull these out of the regular execution path.
    */
-  @Override
-  public float readFloat() throws IOException {
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    int v = 0;
-    for (int i = 0; i < 4; i++) {
-      v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    if ((v & (1 << 31)) == 0) {
-      // negative number, flip all bits
-      v = ~v;
-    } else {
-      // positive number, flip the first bit
-      v = v ^ (1 << 31);
-    }
-    return Float.intBitsToFloat(v);
-  }
-
-  /*
-   * DOUBLE.
-   */
-  @Override
-  public double readDouble() throws IOException {
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    long v = 0;
-    for (int i = 0; i < 8; i++) {
-      v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    if ((v & (1L << 63)) == 0) {
-      // negative number, flip all bits
-      v = ~v;
-    } else {
-      // positive number, flip the first bit
-      v = v ^ (1L << 63);
-    }
-    return Double.longBitsToDouble(v);
-  }
-
-  // This class is for internal use.
-  private static class BinarySortableReadStringResults extends ReadStringResults {
-
-    // Use an org.apache.hadoop.io.Text object as a buffer to decode the BinarySortable
-    // format string into.
-    private Text text;
-
-    public BinarySortableReadStringResults() {
-      super();
-      text = new Text();
-    }
-  }
-
-  // Reading a STRING field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different bytes field. 
-  @Override
-  public ReadStringResults createReadStringResults() {
-    return new BinarySortableReadStringResults();
-  }
-  
-
-  @Override
-  public void readString(ReadStringResults readStringResults) throws IOException {
-    BinarySortableReadStringResults binarySortableReadStringResults = 
-            (BinarySortableReadStringResults) readStringResults;
-
-    BinarySortableSerDe.deserializeText(inputByteBuffer, columnSortOrderIsDesc[fieldIndex], binarySortableReadStringResults.text);
-    readStringResults.bytes = binarySortableReadStringResults.text.getBytes();
-    readStringResults.start = 0;
-    readStringResults.length = binarySortableReadStringResults.text.getLength();
-  }
-
-
-  /*
-   * CHAR.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadHiveCharResults extends ReadHiveCharResults {
-
-    public BinarySortableReadHiveCharResults() {
-      super();
-    }
-
-    public HiveCharWritable getHiveCharWritable() {
-      return hiveCharWritable;
-    }
-  }
-
-  // Reading a CHAR field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different CHAR field. 
-  @Override
-  public ReadHiveCharResults createReadHiveCharResults() {
-    return new BinarySortableReadHiveCharResults();
-  }
-
-  public void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOException {
-    BinarySortableReadHiveCharResults binarySortableReadHiveCharResults = 
-            (BinarySortableReadHiveCharResults) readHiveCharResults;
-
-    if (!binarySortableReadHiveCharResults.isInit()) {
-      binarySortableReadHiveCharResults.init((CharTypeInfo) typeInfos[fieldIndex]);
-    }
-
-    HiveCharWritable hiveCharWritable = binarySortableReadHiveCharResults.getHiveCharWritable();
-
-    // Decode the bytes into our Text buffer, then truncate.
-    BinarySortableSerDe.deserializeText(inputByteBuffer, columnSortOrderIsDesc[fieldIndex], hiveCharWritable.getTextValue());
-    hiveCharWritable.enforceMaxLength(binarySortableReadHiveCharResults.getMaxLength());
-
-    readHiveCharResults.bytes = hiveCharWritable.getTextValue().getBytes();
-    readHiveCharResults.start = 0;
-    readHiveCharResults.length = hiveCharWritable.getTextValue().getLength();
-  }
-
-  /*
-   * VARCHAR.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadHiveVarcharResults extends ReadHiveVarcharResults {
-
-    public BinarySortableReadHiveVarcharResults() {
-      super();
-    }
-
-    public HiveVarcharWritable getHiveVarcharWritable() {
-      return hiveVarcharWritable;
-    }
-  }
-
-  // Reading a VARCHAR field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different VARCHAR field. 
-  @Override
-  public ReadHiveVarcharResults createReadHiveVarcharResults() {
-    return new BinarySortableReadHiveVarcharResults();
-  }
-
-  public void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throws IOException {
-    BinarySortableReadHiveVarcharResults binarySortableReadHiveVarcharResults = (BinarySortableReadHiveVarcharResults) readHiveVarcharResults;
-
-    if (!binarySortableReadHiveVarcharResults.isInit()) {
-      binarySortableReadHiveVarcharResults.init((VarcharTypeInfo) typeInfos[fieldIndex]);
-    }
-
-    HiveVarcharWritable hiveVarcharWritable = binarySortableReadHiveVarcharResults.getHiveVarcharWritable();
-
-    // Decode the bytes into our Text buffer, then truncate.
-    BinarySortableSerDe.deserializeText(inputByteBuffer, columnSortOrderIsDesc[fieldIndex], hiveVarcharWritable.getTextValue());
-    hiveVarcharWritable.enforceMaxLength(binarySortableReadHiveVarcharResults.getMaxLength());
-
-    readHiveVarcharResults.bytes = hiveVarcharWritable.getTextValue().getBytes();
-    readHiveVarcharResults.start = 0;
-    readHiveVarcharResults.length = hiveVarcharWritable.getTextValue().getLength();
-  }
-
-  /*
-   * BINARY.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadBinaryResults extends ReadBinaryResults {
-
-    // Use an org.apache.hadoop.io.Text object as a buffer to decode the BinarySortable
-    // format string into.
-    private Text text;
-
-    public BinarySortableReadBinaryResults() {
-      super();
-      text = new Text();
-    }
-  }
-
-  // Reading a BINARY field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different bytes field. 
-  @Override
-  public ReadBinaryResults createReadBinaryResults() {
-    return new BinarySortableReadBinaryResults();
-  }
-
-  @Override
-  public void readBinary(ReadBinaryResults readBinaryResults) throws IOException {
-    BinarySortableReadBinaryResults binarySortableReadBinaryResults = 
-            (BinarySortableReadBinaryResults) readBinaryResults;
-
-    BinarySortableSerDe.deserializeText(inputByteBuffer, columnSortOrderIsDesc[fieldIndex], binarySortableReadBinaryResults.text);
-    readBinaryResults.bytes = binarySortableReadBinaryResults.text.getBytes();
-    readBinaryResults.start = 0;
-    readBinaryResults.length = binarySortableReadBinaryResults.text.getLength();
-  }
-
-  /*
-   * DATE.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadDateResults extends ReadDateResults {
-
-    public BinarySortableReadDateResults() {
-      super();
-    }
-
-    public DateWritable getDateWritable() {
-      return dateWritable;
-    }
-  }
-
-  // Reading a DATE field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different DATE field. 
-  @Override
-  public ReadDateResults createReadDateResults() {
-    return new BinarySortableReadDateResults();
-  }
-
-  @Override
-  public void readDate(ReadDateResults readDateResults) throws IOException {
-    BinarySortableReadDateResults binarySortableReadDateResults = (BinarySortableReadDateResults) readDateResults;
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    int v = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 3; i++) {
-      v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    DateWritable dateWritable = binarySortableReadDateResults.getDateWritable();
-    dateWritable.set(v);
-  }
-
-  /*
-   * TIMESTAMP.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadTimestampResults extends ReadTimestampResults {
-
-    private byte[] timestampBytes;
-
-    public BinarySortableReadTimestampResults() {
-      super();
-      timestampBytes = new byte[TimestampWritable.BINARY_SORTABLE_LENGTH];
-    }
-
-    public TimestampWritable getTimestampWritable() {
-      return timestampWritable;
-    }
-  }
-
-  // Reading a TIMESTAMP field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different TIMESTAMP field. 
-  @Override
-  public ReadTimestampResults createReadTimestampResults() {
-    return new BinarySortableReadTimestampResults();
-  }
-
-  @Override
-  public void readTimestamp(ReadTimestampResults readTimestampResults) throws IOException {
-    BinarySortableReadTimestampResults binarySortableReadTimestampResults = (BinarySortableReadTimestampResults) readTimestampResults;
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    byte[] timestampBytes = binarySortableReadTimestampResults.timestampBytes;
-    for (int i = 0; i < timestampBytes.length; i++) {
-      timestampBytes[i] = inputByteBuffer.read(invert);
-    }
-    TimestampWritable timestampWritable = binarySortableReadTimestampResults.getTimestampWritable();
-    timestampWritable.setBinarySortable(timestampBytes, 0);
-  }
-
-  /*
-   * INTERVAL_YEAR_MONTH.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadIntervalYearMonthResults extends ReadIntervalYearMonthResults {
-
-    public BinarySortableReadIntervalYearMonthResults() {
-      super();
-    }
-
-    public HiveIntervalYearMonthWritable getHiveIntervalYearMonthWritable() {
-      return hiveIntervalYearMonthWritable;
-    }
-  }
-
-  // Reading a INTERVAL_YEAR_MONTH field require a results object to receive value information.
-  // A separate results object is created by the caller at initialization per different
-  // INTERVAL_YEAR_MONTH field. 
-  @Override
-  public ReadIntervalYearMonthResults createReadIntervalYearMonthResults() {
-    return new BinarySortableReadIntervalYearMonthResults();
-  }
-
-  @Override
-  public void readIntervalYearMonth(ReadIntervalYearMonthResults readIntervalYearMonthResults)
-          throws IOException {
-    BinarySortableReadIntervalYearMonthResults binarySortableReadIntervalYearMonthResults =
-                (BinarySortableReadIntervalYearMonthResults) readIntervalYearMonthResults;
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    int v = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 3; i++) {
-      v = (v << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    HiveIntervalYearMonthWritable hiveIntervalYearMonthWritable = 
-                binarySortableReadIntervalYearMonthResults.getHiveIntervalYearMonthWritable();
-    hiveIntervalYearMonthWritable.set(v);
-  }
-
-  /*
-   * INTERVAL_DAY_TIME.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadIntervalDayTimeResults extends ReadIntervalDayTimeResults {
-
-    public BinarySortableReadIntervalDayTimeResults() {
-      super();
-    }
-
-    public HiveIntervalDayTimeWritable getHiveIntervalDayTimeWritable() {
-      return hiveIntervalDayTimeWritable;
-    }
-  }
-
-  // Reading a INTERVAL_DAY_TIME field require a results object to receive value information.
-  // A separate results object is created by the caller at initialization per different
-  // INTERVAL_DAY_TIME field. 
-  @Override
-  public ReadIntervalDayTimeResults createReadIntervalDayTimeResults() {
-    return new BinarySortableReadIntervalDayTimeResults();
-  }
-
-  @Override
-  public void readIntervalDayTime(ReadIntervalDayTimeResults readIntervalDayTimeResults)
-          throws IOException {
-    BinarySortableReadIntervalDayTimeResults binarySortableReadIntervalDayTimeResults =
-                (BinarySortableReadIntervalDayTimeResults) readIntervalDayTimeResults;
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    long totalSecs = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 7; i++) {
-      totalSecs = (totalSecs << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    int nanos = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 3; i++) {
-      nanos = (nanos << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-    HiveIntervalDayTimeWritable hiveIntervalDayTimeWritable = 
-                binarySortableReadIntervalDayTimeResults.getHiveIntervalDayTimeWritable();
-    hiveIntervalDayTimeWritable.set(totalSecs, nanos);
-  }
-
-  /*
-   * DECIMAL.
-   */
-
-  // This class is for internal use.
-  private static class BinarySortableReadDecimalResults extends ReadDecimalResults {
-
-    public HiveDecimal hiveDecimal;
-
-    public BinarySortableReadDecimalResults() {
-      super();
-    }
-
-    @Override
-    public void init(DecimalTypeInfo decimalTypeInfo) {
-      super.init(decimalTypeInfo);
-    }
-
-    @Override
-    public HiveDecimal getHiveDecimal() {
-      return hiveDecimal;
-    }
-  }
-
-  // Reading a DECIMAL field require a results object to receive value information.  A separate
-  // results object is created by the caller at initialization per different DECIMAL field. 
-  @Override
-  public ReadDecimalResults createReadDecimalResults() {
-    return new BinarySortableReadDecimalResults();
-  }
-
-  @Override
-  public void readHiveDecimal(ReadDecimalResults readDecimalResults) throws IOException {
-    BinarySortableReadDecimalResults binarySortableReadDecimalResults = 
-            (BinarySortableReadDecimalResults) readDecimalResults;
-
-    if (!binarySortableReadDecimalResults.isInit()) {
-      binarySortableReadDecimalResults.init(saveDecimalTypeInfo);
-    }
-
-    binarySortableReadDecimalResults.hiveDecimal = saveDecimal;
-
-    saveDecimal = null;
-    saveDecimalTypeInfo = null;
-  }
-
-  /**
-   * We read the whole HiveDecimal value and then enforce precision and scale, which may
-   * make it a NULL.
-   * @return     Returns true if this HiveDecimal enforced to a NULL.
-   * @throws IOException 
-   */
-  private boolean earlyReadHiveDecimal() throws IOException {
-
-    // Since enforcing precision and scale can cause a HiveDecimal to become NULL,
-    // we must read it, enforce it here, and either return NULL or buffer the result.
-
-    final boolean invert = columnSortOrderIsDesc[fieldIndex];
-    int b = inputByteBuffer.read(invert) - 1;
-    assert (b == 1 || b == -1 || b == 0);
-    boolean positive = b != -1;
-
-    int factor = inputByteBuffer.read(invert) ^ 0x80;
-    for (int i = 0; i < 3; i++) {
-      factor = (factor << 8) + (inputByteBuffer.read(invert) & 0xff);
-    }
-
-    if (!positive) {
-      factor = -factor;
-    }
-
-    int start = inputByteBuffer.tell();
-    int length = 0;
-
-    do {
-      b = inputByteBuffer.read(positive ? invert : !invert);
-      assert(b != 1);
-
-      if (b == 0) {
-        // end of digits
-        break;
-      }
-
-      length++;
-    } while (true);
-
-    if(tempDecimalBuffer == null || tempDecimalBuffer.length < length) {
-      tempDecimalBuffer = new byte[length];
-    }
-
-    inputByteBuffer.seek(start);
-    for (int i = 0; i < length; ++i) {
-      tempDecimalBuffer[i] = inputByteBuffer.read(positive ? invert : !invert);
-    }
-
-    // read the null byte again
-    inputByteBuffer.read(positive ? invert : !invert);
-
-    String digits = new String(tempDecimalBuffer, 0, length, BinarySortableSerDe.decimalCharSet);
-    BigInteger bi = new BigInteger(digits);
-    HiveDecimal bd = HiveDecimal.create(bi).scaleByPowerOfTen(factor-length);
-
-    if (!positive) {
-      bd = bd.negate();
-    }
-
-    // We have a decimal.  After we enforce precision and scale, will it become a NULL?
-
-    if (tempHiveDecimalWritable == null) {
-      tempHiveDecimalWritable = new HiveDecimalWritable();
-    }
-    tempHiveDecimalWritable.set(bd);
-
-    saveDecimalTypeInfo = (DecimalTypeInfo) typeInfos[fieldIndex];
-
-    int precision = saveDecimalTypeInfo.getPrecision();
-    int scale = saveDecimalTypeInfo.getScale();
-
-    saveDecimal = tempHiveDecimalWritable.getHiveDecimal(precision, scale);
 
-    // Now return whether it is NULL or NOT NULL.
-    return (saveDecimal == null);
+  private void doReadBeyondConfiguredFieldsWarned() {
+    // Warn only once.
+    LOG.info("Reading beyond configured fields! Configured " + fieldCount + " fields but "
+        + " reading more (NULLs returned).  Ignoring similar problems.");
+    readBeyondConfiguredFieldsWarned = true;
+  }
+
+  private void doReadBeyondBufferRangeWarned() {
+    // Warn only once.
+    int length = inputByteBuffer.tell() - start;
+    LOG.info("Reading beyond buffer range! Buffer range " +  start 
+        + " for length " + length + " but reading more... "
+        + "(total buffer length " + inputByteBuffer.getData().length + ")"
+        + "  Ignoring similar problems.");
+    readBeyondBufferRangeWarned = true;
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java b/serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java
index c2b0cfc..2fad2af 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/fast/DeserializeRead.java
@@ -19,31 +19,22 @@
 package org.apache.hadoop.hive.serde2.fast;
 
 import java.io.IOException;
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import org.apache.hadoop.hive.common.type.HiveChar;
-import org.apache.hadoop.hive.common.type.HiveDecimal;
-import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
-import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
-import org.apache.hadoop.hive.common.type.HiveVarchar;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
 import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
 import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
-import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
 import org.apache.hadoop.hive.serde2.io.TimestampWritable;
-import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
+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.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 
 /*
  * Directly deserialize with the caller reading field-by-field a serialization format.
- * 
+ *
  * The caller is responsible for calling the read method for the right type of each field
  * (after calling readCheckNull).
- * 
+ *
  * Reading some fields require a results object to receive value information.  A separate
  * results object is created by the caller at initialization per different field even for the same
  * type.
@@ -52,17 +43,88 @@ import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
  * other type specific buffers.  So, those references are only valid until the next time set is
  * called.
  */
-public interface DeserializeRead {
+public abstract class DeserializeRead {
+
+  protected TypeInfo[] typeInfos;
+
+  protected boolean[] columnsToInclude;
+
+  protected Category[] categories;
+  protected PrimitiveCategory[] primitiveCategories;
+
+  public DeserializeRead(TypeInfo[] typeInfos) {
+    this.typeInfos = typeInfos;
+    final int count = typeInfos.length;
+    categories = new Category[count];
+    primitiveCategories = new PrimitiveCategory[count];
+    for (int i = 0; i < count; i++) {
+      TypeInfo typeInfo = typeInfos[i];
+      Category category = typeInfo.getCategory();
+      categories[i] = category;
+      if (category == Category.PRIMITIVE) {
+        PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfo;
+        PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
+        primitiveCategories[i] = primitiveCategory;
+
+        switch (primitiveCategory) {
+        case DATE:
+          if (currentDateWritable == null) {
+            currentDateWritable = new DateWritable();
+          }
+          break;
+        case TIMESTAMP:
+          if (currentTimestampWritable == null) {
+            currentTimestampWritable = new TimestampWritable();
+          }
+          break;
+        case INTERVAL_YEAR_MONTH:
+          if (currentHiveIntervalYearMonthWritable == null) {
+            currentHiveIntervalYearMonthWritable = new HiveIntervalYearMonthWritable();
+          }
+          break;
+        case INTERVAL_DAY_TIME:
+          if (currentHiveIntervalDayTimeWritable == null) {
+            currentHiveIntervalDayTimeWritable = new HiveIntervalDayTimeWritable();
+          }
+          break;
+        case DECIMAL:
+          if (currentHiveDecimalWritable == null) {
+            currentHiveDecimalWritable = new HiveDecimalWritable();
+          }
+          break;
+        default:
+          // No writable needed for this data type.
+        }
+      }
+    }
+
+    columnsToInclude = null;
+  }
+
+  // Don't allow for public.
+  protected DeserializeRead() {
+  }
 
   /*
    * The type information for all fields.
    */
-  TypeInfo[] typeInfos();
+  public TypeInfo[] typeInfos() {
+    return typeInfos;
+  }
+
+  /*
+   * If some fields are are not going to be used by the query, use this routine to specify
+   * the columns to return.  The readCheckNull method will automatically return NULL for the
+   * other columns.
+   */
+  public void setColumnsToInclude(boolean[] columnsToInclude) {
+    this.columnsToInclude = columnsToInclude;
+  }
 
   /*
    * Set the range of bytes to be deserialized.
    */
-  void set(byte[] bytes, int offset, int length);
+  public abstract void set(byte[] bytes, int offset, int length);
 
   /*
    * Reads the NULL information for a field.
@@ -70,318 +132,91 @@ public interface DeserializeRead {
    * @return Return true when the field is NULL; reading is positioned to the next field.
    *         Otherwise, false when the field is NOT NULL; reading is positioned to the field data.
    */
-  boolean readCheckNull() throws IOException;
+  public abstract boolean readCheckNull() throws IOException;
 
   /*
    * Call this method after all fields have been read to check for extra fields.
    */
-  void extraFieldsCheck();
- 
+  public abstract void extraFieldsCheck();
+
   /*
    * Read integrity warning flags.
    */
-  boolean readBeyondConfiguredFieldsWarned();
-  boolean readBeyondBufferRangeWarned();
-  boolean bufferRangeHasExtraDataWarned();
+  public abstract boolean readBeyondConfiguredFieldsWarned();
+  public abstract boolean readBeyondBufferRangeWarned();
+  public abstract boolean bufferRangeHasExtraDataWarned();
+
+  /*
+   * These members hold the current value that was read when readCheckNull return false.
+   */
 
   /*
    * BOOLEAN.
    */
-  boolean readBoolean() throws IOException;
+  public boolean currentBoolean;
 
   /*
    * BYTE.
    */
-  byte readByte() throws IOException;
+  public byte currentByte;
 
   /*
    * SHORT.
    */
-  short readShort() throws IOException;
+  public short currentShort;
 
   /*
    * INT.
    */
-  int readInt() throws IOException;
+  public int currentInt;
 
   /*
    * LONG.
    */
-  long readLong() throws IOException;
+  public long currentLong;
 
   /*
    * FLOAT.
    */
-  float readFloat() throws IOException;
+  public float currentFloat;
 
   /*
    * DOUBLE.
    */
-  double readDouble() throws IOException;
-
-  /*
-   * This class is the base abstract read bytes results for STRING, CHAR, VARCHAR, and BINARY.
-   */
-  public abstract class ReadBytesResults {
-
-    public byte[] bytes;
-    public int start;
-    public int length;
-
-    public ReadBytesResults() {
-      bytes = null;
-      start = 0;
-      length = 0;
-    }
-  }
+  public double currentDouble;
 
   /*
-   * STRING.
+   * STRING, CHAR, VARCHAR, and BINARY.
    *
-   * Can be used to read CHAR and VARCHAR when the caller takes responsibility for
+   * For CHAR and VARCHAR when the caller takes responsibility for
    * truncation/padding issues.
    */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadStringResults extends ReadBytesResults {
-
-    public ReadStringResults() {
-      super();
-    }
-  }
-
-  // Reading a STRING field require a results object to receive value information.  A separate
-  // results object is created at initialization per different bytes field. 
-  ReadStringResults createReadStringResults();
-
-  void readString(ReadStringResults readStringResults) throws IOException;
-
-  /*
-   * CHAR.
-   */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadHiveCharResults extends ReadBytesResults {
-
-    private CharTypeInfo charTypeInfo;
-    private int maxLength;
-
-    protected HiveCharWritable hiveCharWritable;
-
-    public ReadHiveCharResults() {
-      super();
-    }
-
-    public void init(CharTypeInfo charTypeInfo) {
-      this.charTypeInfo = charTypeInfo;
-      this.maxLength = charTypeInfo.getLength();
-      hiveCharWritable = new HiveCharWritable();
-    }
-
-    public boolean isInit() {
-      return (charTypeInfo != null);
-    }
-
-    public int getMaxLength() {
-      return maxLength;
-    }
-
-    public HiveChar getHiveChar() {
-      return hiveCharWritable.getHiveChar();
-    }
-  }
-
-  // Reading a CHAR field require a results object to receive value information.  A separate
-  // results object is created at initialization per different CHAR field. 
-  ReadHiveCharResults createReadHiveCharResults();
-
-  void readHiveChar(ReadHiveCharResults readHiveCharResults) throws IOException;
-
-  /*
-   * VARCHAR.
-   */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadHiveVarcharResults extends ReadBytesResults {
-
-    private VarcharTypeInfo varcharTypeInfo;
-    private int maxLength;
-
-    protected HiveVarcharWritable hiveVarcharWritable;
-
-    public ReadHiveVarcharResults() {
-      super();
-    }
-
-    public void init(VarcharTypeInfo varcharTypeInfo) {
-      this.varcharTypeInfo = varcharTypeInfo;
-      this.maxLength = varcharTypeInfo.getLength();
-      hiveVarcharWritable = new HiveVarcharWritable();
-    }
-
-    public boolean isInit() {
-      return (varcharTypeInfo != null);
-    }
-
-    public int getMaxLength() {
-      return maxLength;
-    }
-
-    public HiveVarchar getHiveVarchar() {
-      return hiveVarcharWritable.getHiveVarchar();
-    }
-  }
-
-  // Reading a VARCHAR field require a results object to receive value information.  A separate
-  // results object is created at initialization per different VARCHAR field. 
-  ReadHiveVarcharResults createReadHiveVarcharResults();
-
-  void readHiveVarchar(ReadHiveVarcharResults readHiveVarcharResults) throws IOException;
-
-  /*
-   * BINARY.
-   */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadBinaryResults extends ReadBytesResults {
-
-    public ReadBinaryResults() {
-      super();
-    }
-  }
-
-  // Reading a BINARY field require a results object to receive value information.  A separate
-  // results object is created at initialization per different bytes field. 
-  ReadBinaryResults createReadBinaryResults();
-
-  void readBinary(ReadBinaryResults readBinaryResults) throws IOException;
+  public byte[] currentBytes;
+  public int currentBytesStart;
+  public int currentBytesLength;
 
   /*
    * DATE.
    */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadDateResults {
-
-    protected DateWritable dateWritable;
-
-    public ReadDateResults() {
-      dateWritable = new DateWritable();
-    }
-
-    public Date getDate() {
-      return dateWritable.get();
-    }
-
-    public int getDays() {
-      return dateWritable.getDays();
-    }
-  }
-
-  // Reading a DATE field require a results object to receive value information.  A separate
-  // results object is created at initialization per different DATE field. 
-  ReadDateResults createReadDateResults();
-
-  void readDate(ReadDateResults readDateResults) throws IOException;
+  public DateWritable currentDateWritable;
 
   /*
    * TIMESTAMP.
    */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadTimestampResults {
-
-    protected TimestampWritable timestampWritable;
-
-    public ReadTimestampResults() {
-      timestampWritable = new TimestampWritable();
-    }
-
-    public Timestamp getTimestamp() {
-      return timestampWritable.getTimestamp();
-    }
-  }
-
-  // Reading a TIMESTAMP field require a results object to receive value information.  A separate
-  // results object is created at initialization per different TIMESTAMP field. 
-  ReadTimestampResults createReadTimestampResults();
-
-  void readTimestamp(ReadTimestampResults readTimestampResult) throws IOException;
+  public TimestampWritable currentTimestampWritable;
 
   /*
    * INTERVAL_YEAR_MONTH.
    */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadIntervalYearMonthResults {
-
-    protected HiveIntervalYearMonthWritable hiveIntervalYearMonthWritable;
-
-    public ReadIntervalYearMonthResults() {
-      hiveIntervalYearMonthWritable = new HiveIntervalYearMonthWritable();
-    }
-
-    public HiveIntervalYearMonth getHiveIntervalYearMonth() {
-      return hiveIntervalYearMonthWritable.getHiveIntervalYearMonth();
-    }
-  }
-
-  // Reading a INTERVAL_YEAR_MONTH field require a results object to receive value information.
-  // A separate results object is created at initialization per different INTERVAL_YEAR_MONTH field. 
-  ReadIntervalYearMonthResults createReadIntervalYearMonthResults();
-
-  void readIntervalYearMonth(ReadIntervalYearMonthResults readIntervalYearMonthResult) throws IOException;
+  public HiveIntervalYearMonthWritable currentHiveIntervalYearMonthWritable;
 
   /*
    * INTERVAL_DAY_TIME.
    */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadIntervalDayTimeResults {
-
-    protected HiveIntervalDayTimeWritable hiveIntervalDayTimeWritable;
-
-    public ReadIntervalDayTimeResults() {
-      hiveIntervalDayTimeWritable = new HiveIntervalDayTimeWritable();
-    }
-
-    public HiveIntervalDayTime getHiveIntervalDayTime() {
-      return hiveIntervalDayTimeWritable.getHiveIntervalDayTime();
-    }
-  }
-
-  // Reading a INTERVAL_DAY_TIME field require a results object to receive value information.
-  // A separate results object is created at initialization per different INTERVAL_DAY_TIME field. 
-  ReadIntervalDayTimeResults createReadIntervalDayTimeResults();
-
-  void readIntervalDayTime(ReadIntervalDayTimeResults readIntervalDayTimeResult) throws IOException;
+  public HiveIntervalDayTimeWritable currentHiveIntervalDayTimeWritable;
 
   /*
    * DECIMAL.
    */
-
-  // This class is for abstract since each format may need its own specialization.
-  public abstract class ReadDecimalResults {
-
-    protected DecimalTypeInfo decimalTypeInfo;
-
-    public ReadDecimalResults() {
-    }
-
-    public void init(DecimalTypeInfo decimalTypeInfo) {
-      this.decimalTypeInfo = decimalTypeInfo;
-    }
-
-    public boolean isInit() {
-      return (decimalTypeInfo != null);
-    }
-
-    public abstract HiveDecimal getHiveDecimal();
-  }
-
-  // Reading a DECIMAL field require a results object to receive value information.  A separate
-  // results object is created at initialization per different DECIMAL field. 
-  ReadDecimalResults createReadDecimalResults();
-
-  void readHiveDecimal(ReadDecimalResults readDecimalResults) throws IOException;
+  public HiveDecimalWritable currentHiveDecimalWritable;
 }
\ No newline at end of file


[23/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part.q.out
new file mode 100644
index 0000000..f105795
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part.q.out
@@ -0,0 +1,4479 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_int_permute_select
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: drop table part_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: drop table part_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_int_string_permute_select
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c	d
+1	1	1	original	NULL	NULL
+10	1	6	new	NULL	NULL
+2	1	2	original	NULL	NULL
+3	1	3	original	NULL	NULL
+4	1	4	original	NULL	NULL
+5	2	1	new	10	ten
+6	2	2	new	20	twenty
+7	2	3	new	30	thirty
+8	2	4	new	40	forty
+9	1	5	new	NULL	NULL
+PREHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	c	d
+1	1	1	NULL	NULL
+10	1	6	NULL	NULL
+2	1	2	NULL	NULL
+3	1	3	NULL	NULL
+4	1	4	NULL	NULL
+5	2	1	10	ten
+6	2	2	20	twenty
+7	2	3	30	thirty
+8	2	4	40	forty
+9	1	5	NULL	NULL
+PREHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	d
+1	1	1	NULL
+10	1	6	NULL
+2	1	2	NULL
+3	1	3	NULL
+4	1	4	NULL
+5	2	1	ten
+6	2	2	twenty
+7	2	3	thirty
+8	2	4	forty
+9	1	5	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	d
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	ten
+6	2	twenty
+7	2	thirty
+8	2	forty
+9	1	NULL
+PREHOOK: query: drop table part_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: drop table part_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_string_group_double
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: double), c2 (type: double), c3 (type: double), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: double), _col3 (type: double), _col4 (type: double), _col5 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: double), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Input: default@part_change_string_group_double@part=1
+PREHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Input: default@part_change_string_group_double@part=1
+POSTHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	b
+1	1	753.7028	753.7028	753.7028	original
+10	1	9250340.75	9250340.75	9250340.75	new
+2	1	-3651.672121	-3651.672121	-3651.672121	original
+3	1	-29.0764	-29.0764	-29.0764	original
+4	1	-10.3	-10.3	-10.3	original
+5	2	30.774	30.774	30.774	new
+6	2	20.31	20.31	20.31	new
+7	2	46114.284799488	46114.284799488	46114.284799488	new
+8	2	-66475.561431	-66475.561431	-66475.561431	new
+9	1	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table part_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: drop table part_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_date_group_string_group_timestamp
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+              Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: char(50)), _col4 (type: char(15)), _col5 (type: varchar(50)), _col6 (type: varchar(15)), _col7 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(15)), VALUE._col4 (type: varchar(50)), VALUE._col5 (type: varchar(15)), VALUE._col6 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+          Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	1	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	1	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	2	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	2	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	1	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	NULL	6229-06-28 02:54:28.970117179	NULL	new
+9	1	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	NULL	5966-07-09 03:30:50.597	NULL	new
+PREHOOK: query: drop table part_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table part_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_date_group_string_group_date
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+              Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: char(50)), _col4 (type: char(15)), _col5 (type: varchar(50)), _col6 (type: varchar(15)), _col7 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(15)), VALUE._col4 (type: varchar(50)), VALUE._col5 (type: varchar(15)), VALUE._col6 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+          Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	1	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	1	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	2	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	2	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	2	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	2	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table part_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: drop table part_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_numeric_group_string_group_multi_ints_string
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: string), c3 (type: string), c4 (type: string), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: string), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+10	1	17	NULL	754072151	3289094	new
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+5	2	2000	72909	3244222	-93222	new
+6	2	1	200	2323322	5430907	new
+7	2	256	32768	31889	470614135	new
+8	2	5555	40000	-719017797	810662019	new
+9	1	100	5000	5443	0	new
+PREHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_gr

<TRUNCATED>

[07/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_table.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_table.q.out
new file mode 100644
index 0000000..2b799f9
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_table.q.out
@@ -0,0 +1,3741 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=11)
+          Output:["_col0","_col1","_col2"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=11)
+              Output:["_col0","_col1","_col2"]
+              TableScan [TS_0] (rows=10 width=11)
+                default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: drop table table_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: drop table table_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=15)
+          Output:["_col0","_col1","_col2"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=15)
+              Output:["_col0","_col1","_col2"]
+              TableScan [TS_0] (rows=10 width=15)
+                default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c	d
+1	1	original	NULL	NULL
+10	6	new	200	two hundred
+2	2	original	NULL	NULL
+3	3	original	NULL	NULL
+4	4	original	NULL	NULL
+5	1	new	10	ten
+6	2	new	20	twenty
+7	3	new	30	thirty
+8	4	new	40	forty
+9	5	new	100	hundred
+PREHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	c	d
+1	1	NULL	NULL
+10	6	200	two hundred
+2	2	NULL	NULL
+3	3	NULL	NULL
+4	4	NULL	NULL
+5	1	10	ten
+6	2	20	twenty
+7	3	30	thirty
+8	4	40	forty
+9	5	100	hundred
+PREHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	d
+1	1	NULL
+10	6	two hundred
+2	2	NULL
+3	3	NULL
+4	4	NULL
+5	1	ten
+6	2	twenty
+7	3	thirty
+8	4	forty
+9	5	hundred
+PREHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	d
+1	NULL
+10	two hundred
+2	NULL
+3	NULL
+4	NULL
+5	ten
+6	twenty
+7	thirty
+8	forty
+9	hundred
+PREHOOK: query: drop table table_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: drop table table_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=38)
+          Output:["_col0","_col1","_col2","_col3","_col4"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=38)
+              Output:["_col0","_col1","_col2","_col3","_col4"]
+              TableScan [TS_0] (rows=10 width=38)
+                default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	b
+1	753.7028	753.7028	753.7028	original
+10	9250340.75	9250340.75	9250340.75	new
+2	-3651.672121	-3651.672121	-3651.672121	original
+3	-29.0764	-29.0764	-29.0764	original
+4	-10.3	-10.3	-10.3	original
+5	30.774	30.774	30.774	new
+6	20.31	20.31	20.31	new
+7	46114.284799488	46114.284799488	46114.284799488	new
+8	-66475.561431	-66475.561431	-66475.561431	new
+9	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table table_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: drop table table_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=132)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=132)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=9 width=132)
+                default@table_change_date_group_string_group_timestamp,table_change_date_group_string_group_timestamp,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	6229-06-28 02:5	6229-06-28 02:54:28.970117179	6229-06-28 02:5	new
+9	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	5966-07-09 03:3	5966-07-09 03:30:50.597	5966-07-09 03:3	new
+PREHOOK: query: drop table table_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table table_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+c1                  	string              	                    
+c2                  	char(50)            	                    
+c3                  	char(15)            	                    
+c4                  	varchar(50)         	                    
+c5                  	varchar(15)         	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	3                   
+	rawDataSize         	195                 
+	totalSize           	198                 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=61)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=61)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=9 width=61)
+                default@table_change_date_group_string_group_date,table_change_date_group_string_group_date,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table table_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: drop table table_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@table_change_numeric_group_string_group_multi_ints_string,table_change_numeric_group_string_group_multi_ints_string,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+10	17	90000	754072151	3289094	new
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+5	2000	72909	3244222	-93222	new
+6	1	200	2323322	5430907	new
+7	256	32768	31889	470614135	new
+8	5555	40000	-719017797	810662019	new
+9	100	5000	5443	0	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@table_change_numeric_group_string_group_multi_ints_char,table_change_numeric_group_string_group_multi_ints_char,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45                                                	1000                                              	483777                                            	-23866739993                                      	original
+10	17                                                	90000                                             	754072151                                         	3289094                                           	new
+2	-2                                                	-6737                                             	56                                                	28899333                                          	original
+3	NULL	4957                                              	832222222                                         	9000000000                                        	original
+4	0                                                 	20435                                             	847492223                                         	-999999999999                                     	original
+5	2000                                              	72909                                             	3244222                                           	-93222                                            	new
+6	1                                                 	200                                               	2323322                                           	5430907                                           	new
+7	256                                               	32768                                             	31889                                             	470614135                                         	new
+8	5555                                              	40000                                             	-719017797                                        	810662019                                         	new
+9	100                                               	5000                                              	5443                                              	0                                                 	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__19
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__19
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.b SIMPLE [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c1 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c2 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c3 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c4 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.insert_num EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__20
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__20
+POSTHOOK: Outp

<TRUNCATED>

[03/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_table.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_table.q.out
new file mode 100644
index 0000000..1b46fa7
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_table.q.out
@@ -0,0 +1,3741 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=11)
+          Output:["_col0","_col1","_col2"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=11)
+              Output:["_col0","_col1","_col2"]
+              TableScan [TS_0] (rows=10 width=11)
+                default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: drop table table_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: drop table table_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=15)
+          Output:["_col0","_col1","_col2"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=15)
+              Output:["_col0","_col1","_col2"]
+              TableScan [TS_0] (rows=10 width=15)
+                default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c	d
+1	1	original	NULL	NULL
+10	6	new	200	two hundred
+2	2	original	NULL	NULL
+3	3	original	NULL	NULL
+4	4	original	NULL	NULL
+5	1	new	10	ten
+6	2	new	20	twenty
+7	3	new	30	thirty
+8	4	new	40	forty
+9	5	new	100	hundred
+PREHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	c	d
+1	1	NULL	NULL
+10	6	200	two hundred
+2	2	NULL	NULL
+3	3	NULL	NULL
+4	4	NULL	NULL
+5	1	10	ten
+6	2	20	twenty
+7	3	30	thirty
+8	4	40	forty
+9	5	100	hundred
+PREHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	d
+1	1	NULL
+10	6	two hundred
+2	2	NULL
+3	3	NULL
+4	4	NULL
+5	1	ten
+6	2	twenty
+7	3	thirty
+8	4	forty
+9	5	hundred
+PREHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	d
+1	NULL
+10	two hundred
+2	NULL
+3	NULL
+4	NULL
+5	ten
+6	twenty
+7	thirty
+8	forty
+9	hundred
+PREHOOK: query: drop table table_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: drop table table_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=38)
+          Output:["_col0","_col1","_col2","_col3","_col4"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=38)
+              Output:["_col0","_col1","_col2","_col3","_col4"]
+              TableScan [TS_0] (rows=10 width=38)
+                default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	b
+1	753.7028	753.7028	753.7028	original
+10	9250340.75	9250340.75	9250340.75	new
+2	-3651.672121	-3651.672121	-3651.672121	original
+3	-29.0764	-29.0764	-29.0764	original
+4	-10.3	-10.3	-10.3	original
+5	30.774	30.774	30.774	new
+6	20.31	20.31	20.31	new
+7	46114.284799488	46114.284799488	46114.284799488	new
+8	-66475.561431	-66475.561431	-66475.561431	new
+9	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table table_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: drop table table_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=132)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=132)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=9 width=132)
+                default@table_change_date_group_string_group_timestamp,table_change_date_group_string_group_timestamp,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	6229-06-28 02:5	6229-06-28 02:54:28.970117179	6229-06-28 02:5	new
+9	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	5966-07-09 03:3	5966-07-09 03:30:50.597	5966-07-09 03:3	new
+PREHOOK: query: drop table table_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table table_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+c1                  	string              	                    
+c2                  	char(50)            	                    
+c3                  	char(15)            	                    
+c4                  	varchar(50)         	                    
+c5                  	varchar(15)         	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	3                   
+	rawDataSize         	195                 
+	totalSize           	198                 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=61)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=61)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=9 width=61)
+                default@table_change_date_group_string_group_date,table_change_date_group_string_group_date,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table table_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: drop table table_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@table_change_numeric_group_string_group_multi_ints_string,table_change_numeric_group_string_group_multi_ints_string,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+10	17	90000	754072151	3289094	new
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+5	2000	72909	3244222	-93222	new
+6	1	200	2323322	5430907	new
+7	256	32768	31889	470614135	new
+8	5555	40000	-719017797	810662019	new
+9	100	5000	5443	0	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@table_change_numeric_group_string_group_multi_ints_char,table_change_numeric_group_string_group_multi_ints_char,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45                                                	1000                                              	483777                                            	-23866739993                                      	original
+10	17                                                	90000                                             	754072151                                         	3289094                                           	new
+2	-2                                                	-6737                                             	56                                                	28899333                                          	original
+3	NULL	4957                                              	832222222                                         	9000000000                                        	original
+4	0                                                 	20435                                             	847492223                                         	-999999999999                                     	original
+5	2000                                              	72909                                             	3244222                                           	-93222                                            	new
+6	1                                                 	200                                               	2323322                                           	5430907                                           	new
+7	256                                               	32768                                             	31889                                             	470614135                                         	new
+8	5555                                              	40000                                             	-719017797                                        	810662019                                         	new
+9	100                                               	5000                                              	5443                                              	0                                                 	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__19
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__19
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.b SIMPLE [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c1 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c2 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c3 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.c4 EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char_trunc.insert_num EXPRESSION [(values__tmp__table__19)values__tmp__table__19.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__20
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char_trunc
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__20
+POSTHOOK: Outp

<TRUNCATED>

[37/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowSameBatch.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowSameBatch.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowSameBatch.java
deleted file mode 100644
index faec0aa..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowSameBatch.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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.ql.exec.vector;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * This class extracts specified VectorizedRowBatch row columns into a Writable row Object[].
- *
- * The caller provides the hive type names and target column numbers in the order desired to
- * extract from the Writable row Object[].
- *
- * This class is for use when the batch being assigned is always the same.
- */
-public class VectorExtractRowSameBatch extends VectorExtractRow {
-
-  public void setOneBatch(VectorizedRowBatch batch) throws HiveException {
-    setBatch(batch);
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java
index a3082c3..ff88b85 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorFileSinkOperator.java
@@ -43,7 +43,7 @@ public class VectorFileSinkOperator extends FileSinkOperator {
 
   private transient boolean firstBatch;
 
-  private transient VectorExtractRowDynBatch vectorExtractRowDynBatch;
+  private transient VectorExtractRow vectorExtractRow;
 
   protected transient Object[] singleRow;
 
@@ -80,30 +80,26 @@ public class VectorFileSinkOperator extends FileSinkOperator {
   public void process(Object data, int tag) throws HiveException {
     VectorizedRowBatch batch = (VectorizedRowBatch) data;
     if (firstBatch) {
-      vectorExtractRowDynBatch = new VectorExtractRowDynBatch();
-      vectorExtractRowDynBatch.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
+      vectorExtractRow = new VectorExtractRow();
+      vectorExtractRow.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
 
-      singleRow = new Object[vectorExtractRowDynBatch.getCount()];
+      singleRow = new Object[vectorExtractRow.getCount()];
 
       firstBatch = false;
     }
 
-    vectorExtractRowDynBatch.setBatchOnEntry(batch);
-
     if (batch.selectedInUse) {
       int selected[] = batch.selected;
       for (int logical = 0 ; logical < batch.size; logical++) {
         int batchIndex = selected[logical];
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     } else {
       for (int batchIndex = 0 ; batchIndex < batch.size; batchIndex++) {
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     }
-
-    vectorExtractRowDynBatch.forgetBatchOnExit();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
index f20f614..98a9bf6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
@@ -103,7 +103,7 @@ public class VectorGroupByOperator extends Operator<GroupByDesc> implements
   private transient VectorizedRowBatch outputBatch;
   private transient VectorizedRowBatchCtx vrbCtx;
 
-  private transient VectorAssignRowSameBatch vectorAssignRowSameBatch;
+  private transient VectorAssignRow vectorAssignRow;
 
   private transient int numEntriesHashTable;
 
@@ -823,9 +823,8 @@ public class VectorGroupByOperator extends Operator<GroupByDesc> implements
         vrbCtx = new VectorizedRowBatchCtx();
         vrbCtx.init((StructObjectInspector) outputObjInspector, vOutContext.getScratchColumnTypeNames());
         outputBatch = vrbCtx.createVectorizedRowBatch();
-        vectorAssignRowSameBatch = new VectorAssignRowSameBatch();
-        vectorAssignRowSameBatch.init((StructObjectInspector) outputObjInspector, vOutContext.getProjectedColumns());
-        vectorAssignRowSameBatch.setOneBatch(outputBatch);
+        vectorAssignRow = new VectorAssignRow();
+        vectorAssignRow.init((StructObjectInspector) outputObjInspector, vOutContext.getProjectedColumns());
       }
 
     } catch (HiveException he) {
@@ -912,11 +911,11 @@ public class VectorGroupByOperator extends Operator<GroupByDesc> implements
     } else {
       // Output keys and aggregates into the output batch.
       for (int i = 0; i < outputKeyLength; ++i) {
-        vectorAssignRowSameBatch.assignRowColumn(outputBatch.size, fi++,
+        vectorAssignRow.assignRowColumn(outputBatch, outputBatch.size, fi++,
                 keyWrappersBatch.getWritableKeyValue (kw, i, keyOutputWriters[i]));
       }
       for (int i = 0; i < aggregators.length; ++i) {
-        vectorAssignRowSameBatch.assignRowColumn(outputBatch.size, fi++,
+        vectorAssignRow.assignRowColumn(outputBatch, outputBatch.size, fi++,
                 aggregators[i].evaluateOutput(agg.getAggregationBuffer(i)));
       }
       ++outputBatch.size;
@@ -937,7 +936,7 @@ public class VectorGroupByOperator extends Operator<GroupByDesc> implements
       throws HiveException {
     int fi = outputKeyLength;   // Start after group keys.
     for (int i = 0; i < aggregators.length; ++i) {
-      vectorAssignRowSameBatch.assignRowColumn(outputBatch.size, fi++,
+      vectorAssignRow.assignRowColumn(outputBatch, outputBatch.size, fi++,
               aggregators[i].evaluateOutput(agg.getAggregationBuffer(i)));
     }
     ++outputBatch.size;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinBaseOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinBaseOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinBaseOperator.java
index 6bed52f..902a183 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinBaseOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinBaseOperator.java
@@ -59,7 +59,7 @@ public class VectorMapJoinBaseOperator extends MapJoinOperator implements Vector
   protected transient VectorizedRowBatch outputBatch;
   protected transient VectorizedRowBatch scratchBatch;  // holds restored (from disk) big table rows
 
-  protected transient Map<ObjectInspector, VectorAssignRowSameBatch> outputVectorAssignRowMap;
+  protected transient Map<ObjectInspector, VectorAssignRow> outputVectorAssignRowMap;
 
   protected transient VectorizedRowBatchCtx vrbCtx = null;
 
@@ -100,7 +100,7 @@ public class VectorMapJoinBaseOperator extends MapJoinOperator implements Vector
 
     outputBatch = vrbCtx.createVectorizedRowBatch();
 
-    outputVectorAssignRowMap = new HashMap<ObjectInspector, VectorAssignRowSameBatch>();
+    outputVectorAssignRowMap = new HashMap<ObjectInspector, VectorAssignRow>();
   }
 
   /**
@@ -109,15 +109,14 @@ public class VectorMapJoinBaseOperator extends MapJoinOperator implements Vector
   @Override
   protected void internalForward(Object row, ObjectInspector outputOI) throws HiveException {
     Object[] values = (Object[]) row;
-    VectorAssignRowSameBatch va = outputVectorAssignRowMap.get(outputOI);
+    VectorAssignRow va = outputVectorAssignRowMap.get(outputOI);
     if (va == null) {
-      va = new VectorAssignRowSameBatch();
+      va = new VectorAssignRow();
       va.init((StructObjectInspector) outputOI, vOutContext.getProjectedColumns());
-      va.setOneBatch(outputBatch);
       outputVectorAssignRowMap.put(outputOI, va);
     }
 
-    va.assignRow(outputBatch.size, values);
+    va.assignRow(outputBatch, outputBatch.size, values);
 
     ++outputBatch.size;
     if (outputBatch.size == VectorizedRowBatch.DEFAULT_SIZE) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java
index e8f4471..3323df3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOperator.java
@@ -181,7 +181,9 @@ public class VectorMapJoinOperator extends VectorMapJoinBaseOperator {
     joinValues[posBigTable] = vectorNodeEvaluators;
 
     // Filtering is handled in the input batch processing
-    filterMaps[posBigTable] = null;
+    if (filterMaps != null) {
+      filterMaps[posBigTable] = null;
+    }
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java
index 0fe1188..22bebb0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapJoinOuterFilteredOperator.java
@@ -44,7 +44,7 @@ public class VectorMapJoinOuterFilteredOperator extends VectorMapJoinBaseOperato
 
   private transient boolean firstBatch;
 
-  private transient VectorExtractRowDynBatch vectorExtractRowDynBatch;
+  private transient VectorExtractRow vectorExtractRow;
 
   protected transient Object[] singleRow;
 
@@ -94,33 +94,28 @@ public class VectorMapJoinOuterFilteredOperator extends VectorMapJoinBaseOperato
     }
 
     if (firstBatch) {
-      vectorExtractRowDynBatch = new VectorExtractRowDynBatch();
-      vectorExtractRowDynBatch.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
+      vectorExtractRow = new VectorExtractRow();
+      vectorExtractRow.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
 
-      singleRow = new Object[vectorExtractRowDynBatch.getCount()];
+      singleRow = new Object[vectorExtractRow.getCount()];
 
       firstBatch = false;
     }
 
-
-    vectorExtractRowDynBatch.setBatchOnEntry(batch);
-
     // VectorizedBatchUtil.debugDisplayBatch( batch, "VectorReduceSinkOperator processOp ");
 
     if (batch.selectedInUse) {
       int selected[] = batch.selected;
       for (int logical = 0 ; logical < batch.size; logical++) {
         int batchIndex = selected[logical];
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     } else {
       for (int batchIndex = 0 ; batchIndex < batch.size; batchIndex++) {
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     }
-
-    vectorExtractRowDynBatch.forgetBatchOnExit();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
index 9f0c24e..6979956 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorMapOperator.java
@@ -18,20 +18,422 @@
 
 package org.apache.hadoop.hive.ql.exec.vector;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.CompilationOpContext;
-import org.apache.hadoop.hive.ql.exec.MapOperator;
+import org.apache.hadoop.hive.ql.exec.AbstractMapOperator;
+import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.exec.mr.ExecMapperContext;
+import org.apache.hadoop.hive.ql.io.AcidUtils;
+import org.apache.hadoop.hive.ql.io.orc.OrcSerde;
+import org.apache.hadoop.hive.ql.io.orc.OrcStruct;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.OperatorDesc;
+import org.apache.hadoop.hive.ql.plan.PartitionDesc;
+import org.apache.hadoop.hive.ql.plan.TableDesc;
+import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc;
+import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc.VectorMapOperatorReadType;
+import org.apache.hadoop.hive.ql.plan.api.OperatorType;
+import org.apache.hadoop.hive.serde2.ColumnProjectionUtils;
+import org.apache.hadoop.hive.serde2.Deserializer;
+import org.apache.hadoop.hive.serde2.SerDeException;
+import org.apache.hadoop.hive.serde2.SerDeUtils;
+import org.apache.hadoop.hive.serde2.fast.DeserializeRead;
+import org.apache.hadoop.hive.serde2.lazy.LazySerDeParameters;
+import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;
+import org.apache.hadoop.hive.serde2.lazy.fast.LazySimpleDeserializeRead;
+import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinaryDeserializeRead;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
+import org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.ObjectInspectorCopyOption;
+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.BinaryComparable;
 import org.apache.hadoop.io.Writable;
 
-import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
 
-public class VectorMapOperator extends MapOperator {
+/*
+ *
+ * The vectorized MapOperator.
+ *
+ * There are 3 modes of reading for vectorization:
+ *
+ *   1) One for the Vectorized Input File Format which returns VectorizedRowBatch as the row.
+ *
+ *   2) One for using VectorDeserializeRow to deserialize each row into the VectorizedRowBatch.
+ *      Currently, these Input File Formats:
+ *        TEXTFILE
+ *        SEQUENCEFILE
+ *
+ *   3) And one using the regular partition deserializer to get the row object and assigning
+ *      the row object into the VectorizedRowBatch with VectorAssignRow.
+ *      This picks up Input File Format not supported by the other two.
+ */
+public class VectorMapOperator extends AbstractMapOperator {
 
   private static final long serialVersionUID = 1L;
 
+  /*
+   * Overall information on this vectorized Map operation.
+   */
+  private transient HashMap<String, VectorPartitionContext> fileToPartitionContextMap;
+
+  private transient Operator<? extends OperatorDesc> oneRootOperator;
+
+  private transient TypeInfo tableStructTypeInfo;
+  private transient StandardStructObjectInspector tableStandardStructObjectInspector;
+
+  private transient TypeInfo[] tableRowTypeInfos;
+
+  private transient VectorizedRowBatchCtx batchContext;
+              // The context for creating the VectorizedRowBatch for this Map node that
+              // the Vectorizer class determined.
+
+  /*
+   * A different batch for vectorized Input File Format readers so they can do their work
+   * overlapped with work of the row collection that vector/row deserialization does.  This allows
+   * the partitions to mix modes (e.g. for us to flush the previously batched rows on file change).
+   */
+  private transient VectorizedRowBatch vectorizedInputFileFormatBatch;
+
+  /*
+   * This batch is only used by vector/row deserializer readers.
+   */
+  private transient VectorizedRowBatch deserializerBatch;
+
+  private transient long batchCounter;
+
+  private transient int dataColumnCount;
+  private transient int partitionColumnCount;
+  private transient Object[] partitionValues;
+
+  private transient boolean[] columnsToIncludeTruncated;
+
+  /*
+   * The following members have context information for the current partition file being read.
+   */
+  private transient VectorMapOperatorReadType currentReadType;
+  private transient VectorPartitionContext currentVectorPartContext;
+                  // Current vector map operator read type and context.
+
+  private transient int currentDataColumnCount;
+                  // The number of data columns that the current reader will return.
+                  // Only applicable for vector/row deserialization.
+
+  private transient DeserializeRead currentDeserializeRead;
+  private transient VectorDeserializeRow currentVectorDeserializeRow;
+                  // When we are doing vector deserialization, these are the fast deserializer and
+                  // the vector row deserializer.
+
+  private Deserializer currentPartDeserializer;
+  private StructObjectInspector currentPartRawRowObjectInspector;
+  private VectorAssignRow currentVectorAssign;
+                  // When we are doing row deserialization, these are the regular deserializer,
+                  // partition object inspector, and vector row assigner.
+
+  /*
+   * The abstract context for the 3 kinds of vectorized reading.
+   */
+  protected abstract class VectorPartitionContext {
+
+    protected final PartitionDesc partDesc;
+
+    String tableName;
+    String partName;
+
+    /*
+     * Initialization here is adapted from MapOperator.MapOpCtx.initObjectInspector method.
+     */
+    private VectorPartitionContext(PartitionDesc partDesc) {
+      this.partDesc = partDesc;
+
+      TableDesc td = partDesc.getTableDesc();
+
+      // Use table properties in case of unpartitioned tables,
+      // and the union of table properties and partition properties, with partition
+      // taking precedence, in the case of partitioned tables
+      Properties overlayedProps =
+          SerDeUtils.createOverlayedProperties(td.getProperties(), partDesc.getProperties());
+
+      Map<String, String> partSpec = partDesc.getPartSpec();
+
+      tableName = String.valueOf(overlayedProps.getProperty("name"));
+      partName = String.valueOf(partSpec);
+
+    }
+
+    public PartitionDesc getPartDesc() {
+      return partDesc;
+    }
+
+    /*
+     * Override this for concrete initialization.
+     */
+    public abstract void init(Configuration hconf)
+        throws SerDeException, Exception;
+
+    /*
+     * How many data columns is the partition reader actually supplying?
+     */
+    public abstract int getReaderDataColumnCount();
+  }
+
+  /*
+   * Context for reading a Vectorized Input File Format.
+   */
+  protected class VectorizedInputFileFormatPartitionContext extends VectorPartitionContext {
+
+    private VectorizedInputFileFormatPartitionContext(PartitionDesc partDesc) {
+      super(partDesc);
+    }
+
+    public void init(Configuration hconf) {
+    }
+
+    @Override
+    public int getReaderDataColumnCount() {
+      throw new RuntimeException("Not applicable");
+    }
+  }
+
+  /*
+   * Context for using VectorDeserializeRow to deserialize each row from the Input File Format
+   * into the VectorizedRowBatch.
+   */
+  protected class VectorDeserializePartitionContext extends VectorPartitionContext {
+
+    // This helper object deserializes known deserialization / input file format combination into
+    // columns of a row in a vectorized row batch.
+    private VectorDeserializeRow vectorDeserializeRow;
+
+    private DeserializeRead deserializeRead;
+
+    private int readerColumnCount;
+
+    private VectorDeserializePartitionContext(PartitionDesc partDesc) {
+      super(partDesc);
+    }
+
+    public VectorDeserializeRow getVectorDeserializeRow() {
+      return vectorDeserializeRow;
+    }
+
+    DeserializeRead getDeserializeRead() {
+      return deserializeRead;
+    }
+
+    @Override
+    public int getReaderDataColumnCount() {
+      return readerColumnCount;
+    }
+
+    public void init(Configuration hconf)
+        throws SerDeException, HiveException {
+      VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
+
+      // This type information specifies the data types the partition needs to read.
+      TypeInfo[] dataTypeInfos = vectorPartDesc.getDataTypeInfos();
+
+      switch (vectorPartDesc.getVectorDeserializeType()) {
+      case LAZY_SIMPLE:
+        {
+          LazySerDeParameters simpleSerdeParams =
+              new LazySerDeParameters(hconf, partDesc.getTableDesc().getProperties(),
+                  LazySimpleSerDe.class.getName());
+
+          LazySimpleDeserializeRead lazySimpleDeserializeRead =
+              new LazySimpleDeserializeRead(dataTypeInfos, simpleSerdeParams);
+
+          vectorDeserializeRow =
+              new VectorDeserializeRow<LazySimpleDeserializeRead>(lazySimpleDeserializeRead);
+
+          // Initialize with data row type conversion parameters.
+          readerColumnCount =
+              vectorDeserializeRow.initConversion(tableRowTypeInfos, columnsToIncludeTruncated);
+
+          deserializeRead = lazySimpleDeserializeRead;
+        }
+        break;
+
+      case LAZY_BINARY:
+        {
+          LazyBinaryDeserializeRead lazyBinaryDeserializeRead =
+              new LazyBinaryDeserializeRead(dataTypeInfos);
+
+          vectorDeserializeRow =
+              new VectorDeserializeRow<LazyBinaryDeserializeRead>(lazyBinaryDeserializeRead);
+
+          // Initialize with data row type conversion parameters.
+          readerColumnCount =
+              vectorDeserializeRow.initConversion(tableRowTypeInfos, columnsToIncludeTruncated);
+
+          deserializeRead = lazyBinaryDeserializeRead;
+        }
+        break;
+
+      default:
+        throw new RuntimeException(
+            "Unexpected vector deserialize row type " + vectorPartDesc.getVectorDeserializeType().name());
+      }
+    }
+  }
+
+  /*
+   * Context for reading using the regular partition deserializer to get the row object and
+   * assigning the row object into the VectorizedRowBatch with VectorAssignRow
+   */
+  protected class RowDeserializePartitionContext extends VectorPartitionContext {
+
+    private Deserializer partDeserializer;
+    private StructObjectInspector partRawRowObjectInspector;
+    private VectorAssignRow vectorAssign;
+
+    private int readerColumnCount;
+
+    private RowDeserializePartitionContext(PartitionDesc partDesc) {
+      super(partDesc);
+    }
+
+    public Deserializer getPartDeserializer() {
+      return partDeserializer;
+    }
+
+    public StructObjectInspector getPartRawRowObjectInspector() {
+      return partRawRowObjectInspector;
+    }
+
+    public VectorAssignRow getVectorAssign() {
+      return vectorAssign;
+    }
+
+    @Override
+    public int getReaderDataColumnCount() {
+      return readerColumnCount;
+    }
+
+    public void init(Configuration hconf)
+        throws Exception {
+      VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
+
+      partDeserializer = partDesc.getDeserializer(hconf);
+
+      if (partDeserializer instanceof OrcSerde) {
+
+        // UNDONE: We need to get the table schema inspector from self-describing Input File
+        //         Formats like ORC.  Modify the ORC serde instead?  For now, this works.
+
+        partRawRowObjectInspector =
+            (StructObjectInspector) OrcStruct.createObjectInspector(tableStructTypeInfo);
+
+      } else {
+        partRawRowObjectInspector =
+            (StructObjectInspector) partDeserializer.getObjectInspector();
+      }
+
+      TypeInfo[] dataTypeInfos = vectorPartDesc.getDataTypeInfos();
+
+      vectorAssign = new VectorAssignRow();
+
+      // Initialize with data type conversion parameters.
+      readerColumnCount =
+          vectorAssign.initConversion(dataTypeInfos, tableRowTypeInfos, columnsToIncludeTruncated);
+    }
+  }
+
+  public VectorPartitionContext createAndInitPartitionContext(PartitionDesc partDesc,
+      Configuration hconf)
+          throws SerDeException, Exception {
+
+    VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
+    VectorPartitionContext vectorPartitionContext;
+    VectorMapOperatorReadType vectorMapOperatorReadType =
+        vectorPartDesc.getVectorMapOperatorReadType();
+
+    if (vectorMapOperatorReadType == VectorMapOperatorReadType.VECTOR_DESERIALIZE ||
+        vectorMapOperatorReadType == VectorMapOperatorReadType.ROW_DESERIALIZE) {
+      // Verify hive.exec.schema.evolution is true or we have an ACID table so we are producing
+      // the table schema from ORC.  The Vectorizer class assures this.
+      boolean isAcid =
+          AcidUtils.isTablePropertyTransactional(partDesc.getTableDesc().getProperties());
+      Preconditions.checkState(Utilities.isSchemaEvolutionEnabled(hconf, isAcid));
+    }
+
+    switch (vectorMapOperatorReadType) {
+    case VECTORIZED_INPUT_FILE_FORMAT:
+      vectorPartitionContext = new VectorizedInputFileFormatPartitionContext(partDesc);
+      break;
+
+    case VECTOR_DESERIALIZE:
+      vectorPartitionContext = new VectorDeserializePartitionContext(partDesc);
+      break;
+
+    case ROW_DESERIALIZE:
+      vectorPartitionContext = new RowDeserializePartitionContext(partDesc);
+      break;
+
+    default:
+      throw new RuntimeException("Unexpected vector MapOperator read type " +
+          vectorMapOperatorReadType.name());
+    }
+
+    vectorPartitionContext.init(hconf);
+
+    return vectorPartitionContext;
+  }
+
+  private void determineColumnsToInclude(Configuration hconf) {
+
+    columnsToIncludeTruncated = null;
+
+    List<Integer> columnsToIncludeTruncatedList = ColumnProjectionUtils.getReadColumnIDs(hconf);
+    if (columnsToIncludeTruncatedList != null &&
+        columnsToIncludeTruncatedList.size() > 0 && columnsToIncludeTruncatedList.size() < dataColumnCount ) {
+
+      // Partitioned columns will not be in the include list.
+
+      boolean[] columnsToInclude = new boolean[dataColumnCount];
+      Arrays.fill(columnsToInclude, false);
+      for (int columnNum : columnsToIncludeTruncatedList) {
+        columnsToInclude[columnNum] = true;
+      }
+
+      // Work backwards to find the highest wanted column.
+
+      int highestWantedColumnNum = -1;
+      for (int i = dataColumnCount - 1; i >= 0; i--) {
+        if (columnsToInclude[i]) {
+          highestWantedColumnNum = i;
+          break;
+        }
+      }
+      if (highestWantedColumnNum == -1) {
+        throw new RuntimeException("No columns to include?");
+      }
+      int newColumnCount = highestWantedColumnNum + 1;
+      if (newColumnCount == dataColumnCount) {
+        columnsToIncludeTruncated = columnsToInclude;
+      } else {
+        columnsToIncludeTruncated = Arrays.copyOf(columnsToInclude, newColumnCount);
+      }
+    }
+  }
+
   /** Kryo ctor. */
-  @VisibleForTesting
   public VectorMapOperator() {
     super();
   }
@@ -40,29 +442,445 @@ public class VectorMapOperator extends MapOperator {
     super(ctx);
   }
 
+
+  /*
+   * This is the same as the setChildren method below but for empty tables.
+   */
+  @Override
+  public void initEmptyInputChildren(List<Operator<?>> children, Configuration hconf)
+    throws SerDeException, Exception {
+
+    // Get the single TableScanOperator.  Vectorization only supports one input tree.
+    Preconditions.checkState(children.size() == 1);
+    oneRootOperator = children.get(0);
+
+    internalSetChildren(hconf);
+  }
+
+  @Override
+  public void setChildren(Configuration hconf) throws Exception {
+
+    // Get the single TableScanOperator.  Vectorization only supports one input tree.
+    Iterator<Operator<? extends OperatorDesc>> aliasToWorkIterator =
+        conf.getAliasToWork().values().iterator();
+    oneRootOperator = aliasToWorkIterator.next();
+    Preconditions.checkState(!aliasToWorkIterator.hasNext());
+
+    internalSetChildren(hconf);
+  }
+
+  /*
+   * Create information for vector map operator.
+   * The member oneRootOperator has been set.
+   */
+  private void internalSetChildren(Configuration hconf) throws Exception {
+
+    // The setupPartitionContextVars uses the prior read type to flush the prior deserializerBatch,
+    // so set it here to none.
+    currentReadType = VectorMapOperatorReadType.NONE;
+
+    determineColumnsToInclude(hconf);
+
+    batchContext = conf.getVectorizedRowBatchCtx();
+
+    /*
+     * Use a different batch for vectorized Input File Format readers so they can do their work
+     * overlapped with work of the row collection that vector/row deserialization does.  This allows
+     * the partitions to mix modes (e.g. for us to flush the previously batched rows on file change).
+     */
+    vectorizedInputFileFormatBatch =
+        batchContext.createVectorizedRowBatch(columnsToIncludeTruncated);
+    conf.setVectorizedRowBatch(vectorizedInputFileFormatBatch);
+
+    /*
+     * This batch is used by vector/row deserializer readers.
+     */
+    deserializerBatch = batchContext.createVectorizedRowBatch(columnsToIncludeTruncated);
+
+    batchCounter = 0;
+
+    dataColumnCount = batchContext.getDataColumnCount();
+    partitionColumnCount = batchContext.getPartitionColumnCount();
+    partitionValues = new Object[partitionColumnCount];
+
+    /*
+     * Create table related objects
+     */
+    tableStructTypeInfo =
+        TypeInfoFactory.getStructTypeInfo(
+          Arrays.asList(batchContext.getRowColumnNames()),
+          Arrays.asList(batchContext.getRowColumnTypeInfos()));
+    tableStandardStructObjectInspector =
+        (StandardStructObjectInspector)
+            TypeInfoUtils.getStandardWritableObjectInspectorFromTypeInfo(tableStructTypeInfo);
+
+    tableRowTypeInfos = batchContext.getRowColumnTypeInfos();
+
+    /*
+     * The Vectorizer class enforces that there is only one TableScanOperator, so
+     * we don't need the more complicated multiple root operator mapping that MapOperator has.
+     */
+    fileToPartitionContextMap = new HashMap<String, VectorPartitionContext>();
+
+    // Temporary map so we only create one partition context entry.
+    HashMap<PartitionDesc, VectorPartitionContext> partitionContextMap =
+        new HashMap<PartitionDesc, VectorPartitionContext>();
+
+    for (Map.Entry<String, ArrayList<String>> entry : conf.getPathToAliases().entrySet()) {
+      String path = entry.getKey();
+      PartitionDesc partDesc = conf.getPathToPartitionInfo().get(path);
+      ArrayList<String> aliases = entry.getValue();
+
+      VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
+      LOG.info("VectorMapOperator path: " + path +
+          ", read type " + vectorPartDesc.getVectorMapOperatorReadType().name() +
+          ", vector deserialize type " + vectorPartDesc.getVectorDeserializeType().name() +
+          ", aliases " + aliases);
+
+      VectorPartitionContext vectorPartitionContext;
+      if (!partitionContextMap.containsKey(partDesc)) {
+        vectorPartitionContext = createAndInitPartitionContext(partDesc, hconf);
+        partitionContextMap.put(partDesc, vectorPartitionContext);
+      } else {
+        vectorPartitionContext = partitionContextMap.get(partDesc);
+      }
+
+      fileToPartitionContextMap.put(path, vectorPartitionContext);
+    }
+
+    // Create list of one.
+    List<Operator<? extends OperatorDesc>> children =
+        new ArrayList<Operator<? extends OperatorDesc>>();
+    children.add(oneRootOperator);
+
+    setChildOperators(children);
+  }
+
+  @Override
+  public void initializeMapOperator(Configuration hconf) throws HiveException {
+    super.initializeMapOperator(hconf);
+
+    oneRootOperator.initialize(hconf, new ObjectInspector[] {tableStandardStructObjectInspector});
+  }
+
+  public void initializeContexts() throws HiveException {
+    Path fpath = getExecContext().getCurrentInputPath();
+    String nominalPath = getNominalPath(fpath);
+    setupPartitionContextVars(nominalPath);
+  }
+
+  // Find context for current input file
+  @Override
+  public void cleanUpInputFileChangedOp() throws HiveException {
+    super.cleanUpInputFileChangedOp();
+    Path fpath = getExecContext().getCurrentInputPath();
+    String nominalPath = getNominalPath(fpath);
+
+    setupPartitionContextVars(nominalPath);
+
+    // Add alias, table name, and partitions to hadoop conf so that their
+    // children will inherit these
+    oneRootOperator.setInputContext(currentVectorPartContext.tableName,
+        currentVectorPartContext.partName);
+  }
+
+  /*
+   * Setup the context for reading from the next partition file.
+   */
+  private void setupPartitionContextVars(String nominalPath) throws HiveException {
+
+    currentVectorPartContext = fileToPartitionContextMap.get(nominalPath);
+    PartitionDesc partDesc = currentVectorPartContext.getPartDesc();
+    VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
+    currentReadType = vectorPartDesc.getVectorMapOperatorReadType();
+
+    /*
+     * Setup for 3 different kinds of vectorized reading supported:
+     *
+     *   1) Read the Vectorized Input File Format which returns VectorizedRowBatch as the row.
+     *
+     *   2) Read using VectorDeserializeRow to deserialize each row into the VectorizedRowBatch.
+     *
+     *   3) And read using the regular partition deserializer to get the row object and assigning
+     *      the row object into the VectorizedRowBatch with VectorAssignRow.
+     */
+    if (currentReadType == VectorMapOperatorReadType.VECTORIZED_INPUT_FILE_FORMAT) {
+
+      /*
+       * The Vectorized Input File Format reader is responsible for setting the partition column
+       * values, resetting and filling in the batch, etc.
+       */
+
+      /*
+       * Clear all the reading variables.
+       */
+      currentDataColumnCount = 0;
+
+      currentDeserializeRead = null;
+      currentVectorDeserializeRow = null;
+
+      currentPartDeserializer = null;
+      currentPartRawRowObjectInspector = null;
+      currentVectorAssign = null;
+
+    } else {
+
+      /*
+       * We will get "regular" single rows from the Input File Format reader that we will need
+       * to {vector|row} deserialize.
+       */
+      Preconditions.checkState(
+          currentReadType == VectorMapOperatorReadType.VECTOR_DESERIALIZE ||
+          currentReadType == VectorMapOperatorReadType.ROW_DESERIALIZE);
+
+      if (deserializerBatch.size > 0) {
+
+        /*
+         * Clear out any rows in the batch from previous partition since we are going to change
+         * the repeating partition column values.
+         */
+        batchCounter++;
+        oneRootOperator.process(deserializerBatch, 0);
+        deserializerBatch.reset();
+        if (oneRootOperator.getDone()) {
+          setDone(true);
+          return;
+        }
+
+      }
+
+      /*
+       * For this particular file, how many columns will we actually read?
+       */
+      currentDataColumnCount = currentVectorPartContext.getReaderDataColumnCount();
+
+      if (currentDataColumnCount < dataColumnCount) {
+
+        /*
+         * Default any additional data columns to NULL once for the file.
+         */
+        for (int i = currentDataColumnCount; i < dataColumnCount; i++) {
+          ColumnVector colVector = deserializerBatch.cols[i];
+          colVector.isNull[0] = true;
+          colVector.noNulls = false;
+          colVector.isRepeating = true;
+        }
+      }
+
+      if (batchContext.getPartitionColumnCount() > 0) {
+
+        /*
+         * The partition columns are set once for the partition and are marked repeating.
+         */
+        VectorizedRowBatchCtx.getPartitionValues(batchContext, partDesc, partitionValues);
+        batchContext.addPartitionColsToBatch(deserializerBatch, partitionValues);
+      }
+
+      /*
+       * Set or clear the rest of the reading variables based on {vector|row} deserialization.
+       */
+      switch (currentReadType) {
+      case VECTOR_DESERIALIZE:
+        {
+          VectorDeserializePartitionContext vectorDeserPartContext =
+              (VectorDeserializePartitionContext) currentVectorPartContext;
+
+          // Set ours.
+          currentDeserializeRead = vectorDeserPartContext.getDeserializeRead();
+          currentVectorDeserializeRow = vectorDeserPartContext.getVectorDeserializeRow();
+
+          // Clear the other ones.
+          currentPartDeserializer = null;
+          currentPartRawRowObjectInspector = null;
+          currentVectorAssign = null;
+
+        }
+        break;
+
+      case ROW_DESERIALIZE:
+        {
+          RowDeserializePartitionContext rowDeserPartContext =
+              (RowDeserializePartitionContext) currentVectorPartContext;
+
+          // Clear the other ones.
+          currentDeserializeRead = null;
+          currentVectorDeserializeRow = null;
+
+          // Set ours.
+          currentPartDeserializer = rowDeserPartContext.getPartDeserializer();
+          currentPartRawRowObjectInspector = rowDeserPartContext.getPartRawRowObjectInspector();
+          currentVectorAssign = rowDeserPartContext.getVectorAssign();
+        }
+        break;
+
+      default:
+        throw new RuntimeException("Unexpected VectorMapOperator read type " +
+            currentReadType.name());
+      }
+    }
+  }
+
+  @Override
+  public Deserializer getCurrentDeserializer() {
+    // Not applicable.
+    return null;
+  }
+
   @Override
   public void process(Writable value) throws HiveException {
+
     // A mapper can span multiple files/partitions.
-    // The serializers need to be reset if the input file changed
+    // The VectorPartitionContext need to be changed if the input file changed
     ExecMapperContext context = getExecContext();
     if (context != null && context.inputFileChanged()) {
       // The child operators cleanup if input file has changed
       cleanUpInputFileChanged();
     }
 
-    // The row has been converted to comply with table schema, irrespective of partition schema.
-    // So, use tblOI (and not partOI) for forwarding
-    try {
-      int childrenDone = 0;
-      for (MapOpCtx current : currentCtxs) {
-        if (!current.forward(value)) {
-          childrenDone++;
+    if (!oneRootOperator.getDone()) {
+
+      /*
+       * 3 different kinds of vectorized reading supported:
+       *
+       *   1) Read the Vectorized Input File Format which returns VectorizedRowBatch as the row.
+       *
+       *   2) Read using VectorDeserializeRow to deserialize each row into the VectorizedRowBatch.
+       *
+       *   3) And read using the regular partition deserializer to get the row object and assigning
+       *      the row object into the VectorizedRowBatch with VectorAssignRow.
+       */
+      try {
+        if (currentReadType == VectorMapOperatorReadType.VECTORIZED_INPUT_FILE_FORMAT) {
+
+          /*
+           * The Vectorized Input File Format reader has already set the partition column
+           * values, reset and filled in the batch, etc.
+           *
+           * We pass the VectorizedRowBatch through here.
+           */
+          batchCounter++;
+          oneRootOperator.process(value, 0);
+          if (oneRootOperator.getDone()) {
+            setDone(true);
+            return;
+          }
+
+        } else {
+
+          /*
+           * We have a "regular" single rows from the Input File Format reader that we will need
+           * to deserialize.
+           */
+          Preconditions.checkState(
+              currentReadType == VectorMapOperatorReadType.VECTOR_DESERIALIZE ||
+              currentReadType == VectorMapOperatorReadType.ROW_DESERIALIZE);
+
+          if (deserializerBatch.size == deserializerBatch.DEFAULT_SIZE) {
+
+            /*
+             * Feed current full batch to operator tree.
+             */
+            batchCounter++;
+            oneRootOperator.process(deserializerBatch, 0);
+
+            /**
+             * Only reset the current data columns.  Not any data columns defaulted to NULL
+             * because they are not present in the partition, and not partition columns.
+             */
+            for (int c = 0; c < currentDataColumnCount; c++) {
+              deserializerBatch.cols[c].reset();
+              deserializerBatch.cols[c].init();
+            }
+            deserializerBatch.selectedInUse = false;
+            deserializerBatch.size = 0;
+            deserializerBatch.endOfFile = false;
+
+            if (oneRootOperator.getDone()) {
+              setDone(true);
+              return;
+            }
+          }
+
+          /*
+           * Do the {vector|row} deserialization of the one row into the VectorizedRowBatch.
+           */
+          switch (currentReadType) {
+          case VECTOR_DESERIALIZE:
+            {
+              BinaryComparable binComp = (BinaryComparable) value;
+              currentDeserializeRead.set(binComp.getBytes(), 0, binComp.getLength());
+
+              // Deserialize and append new row using the current batch size as the index.
+              currentVectorDeserializeRow.deserialize(deserializerBatch, deserializerBatch.size++);
+            }
+            break;
+
+          case ROW_DESERIALIZE:
+            {
+              Object deserialized = currentPartDeserializer.deserialize(value);
+
+              // Note: Regardless of what the Input File Format returns, we have determined
+              // with VectorAppendRow.initConversion that only currentDataColumnCount columns
+              // have values we want.
+              //
+              // Any extra columns needed by the table schema were set to repeating null
+              // in the batch by setupPartitionContextVars.
+
+              // Convert input row to standard objects.
+              List<Object> standardObjects = new ArrayList<Object>();
+              ObjectInspectorUtils.copyToStandardObject(standardObjects, deserialized,
+                  currentPartRawRowObjectInspector, ObjectInspectorCopyOption.WRITABLE);
+              if (standardObjects.size() < currentDataColumnCount) {
+                throw new HiveException("Input File Format returned row with too few columns");
+              }
+
+              // Append the deserialized standard object row using the current batch size
+              // as the index.
+              currentVectorAssign.assignRow(deserializerBatch, deserializerBatch.size++,
+                  standardObjects, currentDataColumnCount);
+            }
+            break;
+
+          default:
+            throw new RuntimeException("Unexpected vector MapOperator read type " +
+                currentReadType.name());
+          }
         }
+      } catch (Exception e) {
+        throw new HiveException("Hive Runtime Error while processing row ", e);
       }
+    }
+  }
+
+  @Override
+  public void process(Object row, int tag) throws HiveException {
+    throw new HiveException("Hive 2 Internal error: should not be called!");
+  }
 
-      rowsForwarded(childrenDone, ((VectorizedRowBatch)value).size);
-    } catch (Exception e) {
-      throw new HiveException("Hive Runtime Error while processing row ", e);
+  @Override
+  public void closeOp(boolean abort) throws HiveException {
+    if (!abort && oneRootOperator != null && !oneRootOperator.getDone() &&
+        currentReadType != VectorMapOperatorReadType.VECTORIZED_INPUT_FILE_FORMAT) {
+      if (deserializerBatch.size > 0) {
+        batchCounter++;
+        oneRootOperator.process(deserializerBatch, 0);
+        deserializerBatch.size = 0;
+      }
     }
+    super.closeOp(abort);
+  }
+
+  @Override
+  public String getName() {
+    return getOperatorName();
+  }
+
+  static public String getOperatorName() {
+    return "MAP";
+  }
+
+  @Override
+  public OperatorType getType() {
+    return null;
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java
index 74e5130..dd5e20f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorReduceSinkOperator.java
@@ -40,7 +40,7 @@ public class VectorReduceSinkOperator extends ReduceSinkOperator {
 
   private transient boolean firstBatch;
 
-  private transient VectorExtractRowDynBatch vectorExtractRowDynBatch;
+  private transient VectorExtractRow vectorExtractRow;
 
   protected transient Object[] singleRow;
 
@@ -81,32 +81,28 @@ public class VectorReduceSinkOperator extends ReduceSinkOperator {
 
     VectorizedRowBatch batch = (VectorizedRowBatch) data;
     if (firstBatch) {
-      vectorExtractRowDynBatch = new VectorExtractRowDynBatch();
-      vectorExtractRowDynBatch.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
+      vectorExtractRow = new VectorExtractRow();
+      vectorExtractRow.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
 
-      singleRow = new Object[vectorExtractRowDynBatch.getCount()];
+      singleRow = new Object[vectorExtractRow.getCount()];
 
       firstBatch = false;
     }
 
-    vectorExtractRowDynBatch.setBatchOnEntry(batch);
-
     // VectorizedBatchUtil.debugDisplayBatch( batch, "VectorReduceSinkOperator processOp ");
 
     if (batch.selectedInUse) {
       int selected[] = batch.selected;
       for (int logical = 0 ; logical < batch.size; logical++) {
         int batchIndex = selected[logical];
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     } else {
       for (int batchIndex = 0 ; batchIndex < batch.size; batchIndex++) {
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     }
-
-    vectorExtractRowDynBatch.forgetBatchOnExit();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java
index 85c8506..59153c8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSMBMapJoinOperator.java
@@ -76,7 +76,7 @@ public class VectorSMBMapJoinOperator extends SMBMapJoinOperator implements Vect
 
   private transient VectorHashKeyWrapperBatch keyWrapperBatch;
 
-  private transient Map<ObjectInspector, VectorAssignRowSameBatch> outputVectorAssignRowMap;
+  private transient Map<ObjectInspector, VectorAssignRow> outputVectorAssignRowMap;
 
   private transient int batchIndex = -1;
 
@@ -159,7 +159,7 @@ public class VectorSMBMapJoinOperator extends SMBMapJoinOperator implements Vect
 
     keyWrapperBatch = VectorHashKeyWrapperBatch.compileKeyWrapperBatch(keyExpressions);
 
-    outputVectorAssignRowMap = new HashMap<ObjectInspector, VectorAssignRowSameBatch>();
+    outputVectorAssignRowMap = new HashMap<ObjectInspector, VectorAssignRow>();
 
     // This key evaluator translates from the vectorized VectorHashKeyWrapper format
     // into the row-mode MapJoinKey
@@ -287,15 +287,14 @@ public class VectorSMBMapJoinOperator extends SMBMapJoinOperator implements Vect
   @Override
   protected void internalForward(Object row, ObjectInspector outputOI) throws HiveException {
     Object[] values = (Object[]) row;
-    VectorAssignRowSameBatch va = outputVectorAssignRowMap.get(outputOI);
+    VectorAssignRow va = outputVectorAssignRowMap.get(outputOI);
     if (va == null) {
-      va = new VectorAssignRowSameBatch();
+      va = new VectorAssignRow();
       va.init((StructObjectInspector) outputOI, vOutContext.getProjectedColumns());
-      va.setOneBatch(outputBatch);
       outputVectorAssignRowMap.put(outputOI, va);
     }
 
-    va.assignRow(outputBatch.size, values);
+    va.assignRow(outputBatch, outputBatch.size, values);
 
     ++outputBatch.size;
     if (outputBatch.size == VectorizedRowBatch.DEFAULT_SIZE) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkHashTableSinkOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkHashTableSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkHashTableSinkOperator.java
index 3d0b571..51d1436 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkHashTableSinkOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkHashTableSinkOperator.java
@@ -46,7 +46,7 @@ public class VectorSparkHashTableSinkOperator extends SparkHashTableSinkOperator
 
   private transient boolean firstBatch;
 
-  private transient VectorExtractRowDynBatch vectorExtractRowDynBatch;
+  private transient VectorExtractRow vectorExtractRow;
 
   protected transient Object[] singleRow;
 
@@ -82,28 +82,26 @@ public class VectorSparkHashTableSinkOperator extends SparkHashTableSinkOperator
     VectorizedRowBatch batch = (VectorizedRowBatch) row;
 
     if (firstBatch) {
-      vectorExtractRowDynBatch = new VectorExtractRowDynBatch();
-      vectorExtractRowDynBatch.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
+      vectorExtractRow = new VectorExtractRow();
+      vectorExtractRow.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
 
-      singleRow = new Object[vectorExtractRowDynBatch.getCount()];
+      singleRow = new Object[vectorExtractRow.getCount()];
 
       firstBatch = false;
     }
-    vectorExtractRowDynBatch.setBatchOnEntry(batch);
+
     if (batch.selectedInUse) {
       int selected[] = batch.selected;
       for (int logical = 0 ; logical < batch.size; logical++) {
         int batchIndex = selected[logical];
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     } else {
       for (int batchIndex = 0 ; batchIndex < batch.size; batchIndex++) {
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         super.process(singleRow, tag);
       }
     }
-
-    vectorExtractRowDynBatch.forgetBatchOnExit();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkPartitionPruningSinkOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkPartitionPruningSinkOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkPartitionPruningSinkOperator.java
index e7ac531..2dc4d0e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkPartitionPruningSinkOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorSparkPartitionPruningSinkOperator.java
@@ -42,7 +42,7 @@ public class VectorSparkPartitionPruningSinkOperator extends SparkPartitionPruni
 
   protected transient boolean firstBatch;
 
-  protected transient VectorExtractRowDynBatch vectorExtractRowDynBatch;
+  protected transient VectorExtractRow vectorExtractRow;
 
   protected transient Object[] singleRow;
 
@@ -77,27 +77,24 @@ public class VectorSparkPartitionPruningSinkOperator extends SparkPartitionPruni
   public void process(Object data, int tag) throws HiveException {
     VectorizedRowBatch batch = (VectorizedRowBatch) data;
     if (firstBatch) {
-      vectorExtractRowDynBatch = new VectorExtractRowDynBatch();
-      vectorExtractRowDynBatch.init((StructObjectInspector) inputObjInspectors[0],
+      vectorExtractRow = new VectorExtractRow();
+      vectorExtractRow.init((StructObjectInspector) inputObjInspectors[0],
           vContext.getProjectedColumns());
-      singleRow = new Object[vectorExtractRowDynBatch.getCount()];
+      singleRow = new Object[vectorExtractRow.getCount()];
       firstBatch = false;
     }
 
-    vectorExtractRowDynBatch.setBatchOnEntry(batch);
     ObjectInspector rowInspector = inputObjInspectors[0];
     try {
       Writable writableRow;
       for (int logical = 0; logical < batch.size; logical++) {
         int batchIndex = batch.selectedInUse ? batch.selected[logical] : logical;
-        vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+        vectorExtractRow.extractRow(batch, batchIndex, singleRow);
         writableRow = serializer.serialize(singleRow, rowInspector);
         writableRow.write(buffer);
       }
     } catch (Exception e) {
       throw new HiveException(e);
     }
-
-    vectorExtractRowDynBatch.forgetBatchOnExit();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
index 86025ef..5c55011 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
@@ -68,13 +68,11 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUD
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMaxLong;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMaxString;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMaxTimestamp;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMaxIntervalDayTime;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMinDecimal;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMinDouble;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMinLong;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMinString;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMinTimestamp;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFMinIntervalDayTime;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFStdPopDecimal;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFStdPopDouble;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.gen.VectorUDAFStdPopLong;
@@ -171,10 +169,6 @@ public class VectorizationContext {
   public VectorizationContext(String contextName, List<String> initialColumnNames) {
     this.contextName = contextName;
     level = 0;
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("VectorizationContext consructor contextName " + contextName + " level "
-          + level + " initialColumnNames " + initialColumnNames);
-    }
     this.initialColumnNames = initialColumnNames;
     this.projectionColumnNames = initialColumnNames;
 
@@ -195,9 +189,6 @@ public class VectorizationContext {
   public VectorizationContext(String contextName) {
     this.contextName = contextName;
     level = 0;
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("VectorizationContext consructor contextName " + contextName + " level " + level);
-    }
     initialColumnNames = new ArrayList<String>();
     projectedColumns = new ArrayList<Integer>();
     projectionColumnNames = new ArrayList<String>();
@@ -213,7 +204,6 @@ public class VectorizationContext {
   public VectorizationContext(String contextName, VectorizationContext vContext) {
     this.contextName = contextName;
     level = vContext.level + 1;
-    LOG.info("VectorizationContext consructor reference contextName " + contextName + " level " + level);
     this.initialColumnNames = vContext.initialColumnNames;
     this.projectedColumns = new ArrayList<Integer>();
     this.projectionColumnNames = new ArrayList<String>();
@@ -485,7 +475,7 @@ public class VectorizationContext {
       throw new HiveException("Could not vectorize expression: "+exprDesc.getName());
     }
     if (LOG.isDebugEnabled()) {
-      LOG.debug("Input Expression = " + exprDesc.getTypeInfo()
+      LOG.debug("Input Expression = " + exprDesc.toString()
           + ", Vectorized Expression = " + ve.toString());
     }
     return ve;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java
index be04da8..9471e66 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizedBatchUtil.java
@@ -19,6 +19,7 @@
 package org.apache.hadoop.hive.ql.exec.vector;
 
 import java.io.IOException;
+import java.sql.Date;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,8 +29,11 @@ import java.util.Map;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.hive.common.ObjectPair;
 import org.apache.hadoop.hive.common.type.HiveChar;
+import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
 import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
 import org.apache.hadoop.hive.common.type.HiveVarchar;
@@ -49,12 +53,14 @@ import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.MapObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.StandardStructObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.UnionObjectInspector;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.ListTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.MapTypeInfo;
@@ -63,6 +69,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 import org.apache.hadoop.hive.serde2.typeinfo.UnionTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.DataOutputBuffer;
@@ -70,6 +77,7 @@ import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.Writable;
 import org.apache.hive.common.util.DateUtils;
 
 public class VectorizedBatchUtil {
@@ -638,6 +646,47 @@ public class VectorizedBatchUtil {
     return newBatch;
   }
 
+  public static Writable getPrimitiveWritable(PrimitiveCategory primitiveCategory) {
+    switch (primitiveCategory) {
+    case VOID:
+      return null;
+    case BOOLEAN:
+      return new BooleanWritable(false);
+    case BYTE:
+      return new ByteWritable((byte) 0);
+    case SHORT:
+      return new ShortWritable((short) 0);
+    case INT:
+      return new IntWritable(0);
+    case LONG:
+      return new LongWritable(0);
+    case TIMESTAMP:
+      return new TimestampWritable(new Timestamp(0));
+    case DATE:
+      return new DateWritable(new Date(0));
+    case FLOAT:
+      return new FloatWritable(0);
+    case DOUBLE:
+      return new DoubleWritable(0);
+    case BINARY:
+      return new BytesWritable(ArrayUtils.EMPTY_BYTE_ARRAY);
+    case STRING:
+      return new Text(ArrayUtils.EMPTY_BYTE_ARRAY);
+    case VARCHAR:
+      return new HiveVarcharWritable(new HiveVarchar(StringUtils.EMPTY, -1));
+    case CHAR:
+      return new HiveCharWritable(new HiveChar(StringUtils.EMPTY, -1));
+    case DECIMAL:
+      return new HiveDecimalWritable();
+    case INTERVAL_YEAR_MONTH:
+      return new HiveIntervalYearMonthWritable();
+    case INTERVAL_DAY_TIME:
+      return new HiveIntervalDayTimeWritable();
+    default:
+      throw new RuntimeException("Primitive category " + primitiveCategory.name() + " not supported");
+    }
+  }
+
   public static String displayBytes(byte[] bytes, int start, int length) {
     StringBuilder sb = new StringBuilder();
     for (int i = start; i < start + length; i++) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
index 5cbace4..6a3d64b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinGenerateResultOperator.java
@@ -186,7 +186,7 @@ public abstract class VectorMapJoinGenerateResultOperator extends VectorMapJoinC
         int length = byteSegmentRef.getLength();
         smallTableVectorDeserializeRow.setBytes(bytes, offset, length);
 
-        smallTableVectorDeserializeRow.deserializeByValue(batch, batchIndex);
+        smallTableVectorDeserializeRow.deserialize(batch, batchIndex);
       }
 
       // VectorizedBatchUtil.debugDisplayOneRow(batch, batchIndex, "generateHashMapResultSingleValue big table");
@@ -253,7 +253,7 @@ public abstract class VectorMapJoinGenerateResultOperator extends VectorMapJoinC
           int length = byteSegmentRef.getLength();
           smallTableVectorDeserializeRow.setBytes(bytes, offset, length);
 
-          smallTableVectorDeserializeRow.deserializeByValue(overflowBatch, overflowBatch.size);
+          smallTableVectorDeserializeRow.deserialize(overflowBatch, overflowBatch.size);
         }
 
         // VectorizedBatchUtil.debugDisplayOneRow(overflowBatch, overflowBatch.size, "generateHashMapResultMultiValue overflow");
@@ -304,7 +304,7 @@ public abstract class VectorMapJoinGenerateResultOperator extends VectorMapJoinC
           int length = byteSegmentRef.getLength();
           smallTableVectorDeserializeRow.setBytes(bytes, offset, length);
 
-          smallTableVectorDeserializeRow.deserializeByValue(overflowBatch, overflowBatch.DEFAULT_SIZE);
+          smallTableVectorDeserializeRow.deserialize(overflowBatch, overflowBatch.DEFAULT_SIZE);
         }
 
         overflowBatch.size++;
@@ -545,7 +545,7 @@ public abstract class VectorMapJoinGenerateResultOperator extends VectorMapJoinC
 //      LOG.debug(CLASS_NAME + " reProcessBigTable serialized row #" + rowCount + ", offset " + offset + ", length " + length);
 
         bigTableVectorDeserializeRow.setBytes(bytes, offset, length);
-        bigTableVectorDeserializeRow.deserializeByValue(spillReplayBatch, spillReplayBatch.size);
+        bigTableVectorDeserializeRow.deserialize(spillReplayBatch, spillReplayBatch.size);
         spillReplayBatch.size++;
 
         if (spillReplayBatch.size == VectorizedRowBatch.DEFAULT_SIZE) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastLongHashUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastLongHashUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastLongHashUtil.java
index 1877f14..d02d1db 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastLongHashUtil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastLongHashUtil.java
@@ -30,19 +30,19 @@ public class VectorMapJoinFastLongHashUtil {
     long key = 0;
     switch (hashTableKeyType) {
     case BOOLEAN:
-      key = (keyBinarySortableDeserializeRead.readBoolean() ? 1 : 0);
+      key = (keyBinarySortableDeserializeRead.currentBoolean ? 1 : 0);
       break;
     case BYTE:
-      key = (long) keyBinarySortableDeserializeRead.readByte();
+      key = (long) keyBinarySortableDeserializeRead.currentByte;
       break;
     case SHORT:
-      key = (long) keyBinarySortableDeserializeRead.readShort();
+      key = (long) keyBinarySortableDeserializeRead.currentShort;
       break;
     case INT:
-      key = (long) keyBinarySortableDeserializeRead.readInt();
+      key = (long) keyBinarySortableDeserializeRead.currentInt;
       break;
     case LONG:
-      key = keyBinarySortableDeserializeRead.readLong();
+      key = keyBinarySortableDeserializeRead.currentLong;
       break;
     default:
       throw new RuntimeException("Unexpected hash table key type " + hashTableKeyType.name());

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastStringCommon.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastStringCommon.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastStringCommon.java
index adb8044..985fb1c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastStringCommon.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VectorMapJoinFastStringCommon.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.serde2.binarysortable.fast.BinarySortableDeserializeRead;
-import org.apache.hadoop.hive.serde2.fast.DeserializeRead.ReadStringResults;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
 import org.apache.hadoop.io.BytesWritable;
@@ -40,8 +39,6 @@ public class VectorMapJoinFastStringCommon {
 
   private BinarySortableDeserializeRead keyBinarySortableDeserializeRead;
 
-  private ReadStringResults readStringResults;
-
   public void adaptPutRow(VectorMapJoinFastBytesHashTable hashTable,
           BytesWritable currentKey, BytesWritable currentValue) throws HiveException, IOException {
 
@@ -51,9 +48,11 @@ public class VectorMapJoinFastStringCommon {
     if (keyBinarySortableDeserializeRead.readCheckNull()) {
       return;
     }
-    keyBinarySortableDeserializeRead.readString(readStringResults);
 
-    hashTable.add(readStringResults.bytes, readStringResults.start, readStringResults.length,
+    hashTable.add(
+        keyBinarySortableDeserializeRead.currentBytes,
+        keyBinarySortableDeserializeRead.currentBytesStart,
+        keyBinarySortableDeserializeRead.currentBytesLength,
         currentValue);
   }
 
@@ -61,6 +60,5 @@ public class VectorMapJoinFastStringCommon {
     this.isOuterJoin = isOuterJoin;
     PrimitiveTypeInfo[] primitiveTypeInfos = { TypeInfoFactory.stringTypeInfo };
     keyBinarySortableDeserializeRead = new BinarySortableDeserializeRead(primitiveTypeInfos);
-    readStringResults = keyBinarySortableDeserializeRead.createReadStringResults();
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
index 46a5413..cfedf35 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
@@ -205,8 +205,8 @@ public class HiveInputFormat<K extends WritableComparable, V extends Writable>
     if (!HiveConf.getBoolVar(conf, ConfVars.LLAP_IO_ENABLED, LlapProxy.isDaemon())) {
       return inputFormat; // LLAP not enabled, no-op.
     }
-    boolean isSupported = inputFormat instanceof LlapWrappableInputFormatInterface,
-        isVectorized = Utilities.isVectorMode(conf);
+    boolean isSupported = inputFormat instanceof LlapWrappableInputFormatInterface;
+    boolean isVectorized = Utilities.getUseVectorizedInputFileFormat(conf);
     if (!isSupported || !isVectorized) {
       LOG.info("Not using llap for " + inputFormat + ": supported = " + isSupported
           + ", vectorized = " + isVectorized);
@@ -225,7 +225,7 @@ public class HiveInputFormat<K extends WritableComparable, V extends Writable>
   }
 
   public static boolean canWrapAnyForLlap(Configuration conf, MapWork mapWork) {
-    return Utilities.isVectorMode(conf, mapWork);
+    return Utilities.getUseVectorizedInputFileFormat(conf, mapWork);
   }
 
   public static boolean canWrapForLlap(Class<? extends InputFormat> inputFormatClass) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/io/NullRowsInputFormat.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/NullRowsInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/NullRowsInputFormat.java
index c53d149..80858a9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/NullRowsInputFormat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/NullRowsInputFormat.java
@@ -72,7 +72,7 @@ public class NullRowsInputFormat implements InputFormat<NullWritable, NullWritab
     private boolean addPartitionCols = true;
 
     public NullRowsRecordReader(Configuration conf, InputSplit split) throws IOException {
-      boolean isVectorMode = Utilities.isVectorMode(conf);
+      boolean isVectorMode = Utilities.getUseVectorizedInputFileFormat(conf);
       if (LOG.isDebugEnabled()) {
         LOG.debug("Null record reader in " + (isVectorMode ? "" : "non-") + "vector mode");
       }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
----------------------------------------------------------------------
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 fcb8ca4..33fe3b6 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
@@ -452,7 +452,7 @@ public class OrcInputFormat implements InputFormat<NullWritable, OrcStruct>,
                                List<FileStatus> files
                               ) throws IOException {
 
-    if (Utilities.isVectorMode(conf)) {
+    if (Utilities.getUseVectorizedInputFileFormat(conf)) {
       return new VectorizedOrcInputFormat().validateInput(fs, conf, files);
     }
 
@@ -1640,7 +1640,7 @@ public class OrcInputFormat implements InputFormat<NullWritable, OrcStruct>,
   public org.apache.hadoop.mapred.RecordReader<NullWritable, OrcStruct>
   getRecordReader(InputSplit inputSplit, JobConf conf,
                   Reporter reporter) throws IOException {
-    boolean vectorMode = Utilities.isVectorMode(conf);
+    boolean vectorMode = Utilities.getUseVectorizedInputFileFormat(conf);
     boolean isAcidRead = isAcidRead(conf, inputSplit);
 
     if (!isAcidRead) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java
index a4e35cb..5b65e5c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/MapredParquetInputFormat.java
@@ -59,7 +59,7 @@ public class MapredParquetInputFormat extends FileInputFormat<NullWritable, Arra
       final org.apache.hadoop.mapred.Reporter reporter
       ) throws IOException {
     try {
-      if (Utilities.isVectorMode(job)) {
+      if (Utilities.getUseVectorizedInputFileFormat(job)) {
         if (LOG.isDebugEnabled()) {
           LOG.debug("Using vectorized record reader");
         }


[39/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRow.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRow.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRow.java
index de0300a..894ef59 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRow.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRow.java
@@ -18,6 +18,8 @@
 
 package org.apache.hadoop.hive.ql.exec.vector;
 
+import java.sql.Date;
+import java.sql.Timestamp;
 import java.util.List;
 
 import org.slf4j.Logger;
@@ -28,6 +30,7 @@ import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
 import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
 import org.apache.hadoop.hive.common.type.HiveVarchar;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.VectorPartitionConversion;
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
@@ -39,609 +42,689 @@ import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
 import org.apache.hadoop.hive.serde2.io.TimestampWritable;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.Text;
-import org.apache.hive.common.util.DateUtils;
+import org.apache.hadoop.io.Writable;
+
+import com.google.common.base.Preconditions;
+
 
 /**
- * This class assigns specified columns of a row from a Writable row Object[].
- *
- * The caller provides the hive type names and target column numbers in the order desired to
- * assign from the Writable row Object[].
+ * This class assigns specified columns of a row from a Writable row objects.
  *
- * This class is abstract to allow the subclasses to control batch reuse.
+ * The caller provides the data types and projection column numbers of a subset of the columns
+ * to assign.
  */
-public abstract class VectorAssignRow {
+public class VectorAssignRow {
+
   private static final long serialVersionUID = 1L;
   private static final Logger LOG = LoggerFactory.getLogger(VectorAssignRow.class);
 
-  protected abstract class Assigner {
-    protected int columnIndex;
-
-    Assigner(int columnIndex) {
-      this.columnIndex = columnIndex;
-    }
-
-    public int getColumnIndex() {
-      return columnIndex;
-    }
-
-    abstract void setColumnVector(VectorizedRowBatch batch);
-
-    abstract void forgetColumnVector();
-
-    abstract void assign(int batchIndex, Object object);
-  }
-
-  private class VoidAssigner extends Assigner {
-
-    VoidAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-    }
-
-    @Override
-    void forgetColumnVector() {
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      // This is no-op, there is no column to assign to and the object is expected to be null.
-      assert (object == null);
-    }
+  /*
+   * These members have information for assigning a row column objects into the VectorizedRowBatch
+   * columns.
+   *
+   * We say "target" because when there is conversion the data type being converted is the source.
+   */
+  boolean[] isConvert;
+                // For each column, are we converting the row column object?
+
+  int[] projectionColumnNums;
+                // Assigning can be a subset of columns, so this is the projection --
+                // the batch column numbers.
+
+  Category[] targetCategories;
+                // The data type category of each column being assigned.
+
+  PrimitiveCategory[] targetPrimitiveCategories;
+                // The data type primitive category of each column being assigned.
+
+  int[] maxLengths;
+                // For the CHAR and VARCHAR data types, the maximum character length of
+                // the columns.  Otherwise, 0.
+
+  /*
+   * These members have information for data type conversion.
+   * Not defined if there is no conversion.
+   */
+  PrimitiveObjectInspector[] convertSourcePrimitiveObjectInspectors;
+                // The primitive object inspector of the source data type for any column being
+                // converted.  Otherwise, null.
+
+  Writable[] convertTargetWritables;
+                // Conversion to the target data type requires a "helper" target writable in a
+                // few cases.
+
+  /*
+   * Allocate the target related arrays.
+   */
+  private void allocateArrays(int count) {
+    isConvert = new boolean[count];
+    projectionColumnNums = new int[count];
+    targetCategories = new Category[count];
+    targetPrimitiveCategories = new PrimitiveCategory[count];
+    maxLengths = new int[count];
   }
 
-  private abstract class AbstractLongAssigner extends Assigner {
-
-    protected LongColumnVector colVector;
-    protected long[] vector;
-
-    AbstractLongAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (LongColumnVector) batch.cols[columnIndex];
-      vector = colVector.vector;
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-      vector = null;
-    }
+  /*
+   * Allocate the source conversion related arrays (optional).
+   */
+  private void allocateConvertArrays(int count) {
+    convertSourcePrimitiveObjectInspectors = new PrimitiveObjectInspector[count];
+    convertTargetWritables = new Writable[count];
   }
 
-  protected class BooleanAssigner extends AbstractLongAssigner {
-
-    BooleanAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        BooleanWritable bw = (BooleanWritable) object;
-        vector[batchIndex] = (bw.get() ? 1 : 0);
-        colVector.isNull[batchIndex] = false;
+  /*
+   * Initialize one column's target related arrays.
+   */
+  private void initTargetEntry(int logicalColumnIndex, int projectionColumnNum, TypeInfo typeInfo) {
+    isConvert[logicalColumnIndex] = false;
+    projectionColumnNums[logicalColumnIndex] = projectionColumnNum;
+    Category category = typeInfo.getCategory();
+    targetCategories[logicalColumnIndex] = category;
+    if (category == Category.PRIMITIVE) {
+      PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfo;
+      PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
+      targetPrimitiveCategories[logicalColumnIndex] = primitiveCategory;
+      switch (primitiveCategory) {
+      case CHAR:
+        maxLengths[logicalColumnIndex] = ((CharTypeInfo) primitiveTypeInfo).getLength();
+        break;
+      case VARCHAR:
+        maxLengths[logicalColumnIndex] = ((VarcharTypeInfo) primitiveTypeInfo).getLength();
+        break;
+      default:
+        // No additional data type specific setting.
+        break;
       }
     }
   }
 
-  protected class ByteAssigner extends AbstractLongAssigner {
-
-    ByteAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        ByteWritable bw = (ByteWritable) object;
-        vector[batchIndex] = bw.get();
-        colVector.isNull[batchIndex] = false;
+  /*
+   * Initialize one column's source conversion related arrays.
+   * Assumes initTargetEntry has already been called.
+   */
+  private void initConvertSourceEntry(int logicalColumnIndex, TypeInfo convertSourceTypeInfo) {
+    isConvert[logicalColumnIndex] = true;
+    Category convertSourceCategory = convertSourceTypeInfo.getCategory();
+    if (convertSourceCategory == Category.PRIMITIVE) {
+      PrimitiveTypeInfo convertSourcePrimitiveTypeInfo = (PrimitiveTypeInfo) convertSourceTypeInfo;
+      convertSourcePrimitiveObjectInspectors[logicalColumnIndex] =
+        PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(
+            convertSourcePrimitiveTypeInfo);
+
+      // These need to be based on the target.
+      PrimitiveCategory targetPrimitiveCategory = targetPrimitiveCategories[logicalColumnIndex];
+      switch (targetPrimitiveCategory) {
+      case DATE:
+        convertTargetWritables[logicalColumnIndex] = new DateWritable();
+        break;
+      case STRING:
+        convertTargetWritables[logicalColumnIndex] = new Text();
+        break;
+      default:
+        // No additional data type specific setting.
+        break;
       }
     }
   }
 
-  private class ShortAssigner extends AbstractLongAssigner {
+  /*
+   * Initialize using an StructObjectInspector and a column projection list.
+   */
+  public void init(StructObjectInspector structObjectInspector, List<Integer> projectedColumns)
+      throws HiveException {
 
-    ShortAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+    List<? extends StructField> fields = structObjectInspector.getAllStructFieldRefs();
+    final int count = fields.size();
+    allocateArrays(count);
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        ShortWritable sw = (ShortWritable) object;
-        vector[batchIndex] = sw.get();
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+    for (int i = 0; i < count; i++) {
 
-  private class IntAssigner extends AbstractLongAssigner {
+      int projectionColumnNum = projectedColumns.get(i);
 
-    IntAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+      StructField field = fields.get(i);
+      ObjectInspector fieldInspector = field.getFieldObjectInspector();
+      TypeInfo typeInfo =
+          TypeInfoUtils.getTypeInfoFromTypeString(fieldInspector.getTypeName());
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        IntWritable iw = (IntWritable) object;
-        vector[batchIndex] = iw.get();
-        colVector.isNull[batchIndex] = false;
-      }
+      initTargetEntry(i, projectionColumnNum, typeInfo);
     }
   }
 
-  private class LongAssigner extends AbstractLongAssigner {
-
-    LongAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+  /*
+   * Initialize using an StructObjectInspector.
+   * No projection -- the column range 0 .. fields.size()-1
+   */
+  public void init(StructObjectInspector structObjectInspector) throws HiveException {
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        LongWritable lw = (LongWritable) object;
-        vector[batchIndex] = lw.get();
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+    List<? extends StructField> fields = structObjectInspector.getAllStructFieldRefs();
+    final int count = fields.size();
+    allocateArrays(count);
 
-  private class DateAssigner extends AbstractLongAssigner {
+    for (int i = 0; i < count; i++) {
 
-    DateAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+      StructField field = fields.get(i);
+      ObjectInspector fieldInspector = field.getFieldObjectInspector();
+      TypeInfo typeInfo =
+          TypeInfoUtils.getTypeInfoFromTypeString(fieldInspector.getTypeName());
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        DateWritable bw = (DateWritable) object;
-        vector[batchIndex] = bw.getDays();
-        colVector.isNull[batchIndex] = false;
-      }
+      initTargetEntry(i, i, typeInfo);
     }
   }
 
-  private abstract class AbstractTimestampAssigner extends Assigner {
+  /*
+   * Initialize using target data type names.
+   * No projection -- the column range 0 .. types.size()-1
+   */
+  public void init(List<String> typeNames) throws HiveException {
 
-    protected TimestampColumnVector colVector;
+    final int count = typeNames.size();
+    allocateArrays(count);
 
-    AbstractTimestampAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+    for (int i = 0; i < count; i++) {
 
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (TimestampColumnVector) batch.cols[columnIndex];
-    }
+      TypeInfo typeInfo =
+          TypeInfoUtils.getTypeInfoFromTypeString(typeNames.get(i));
 
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
+      initTargetEntry(i, i, typeInfo);
     }
   }
 
-  private class TimestampAssigner extends AbstractTimestampAssigner {
+  /**
+   * Initialize for conversion from a provided (source) data types to the target data types
+   * desired in the VectorizedRowBatch.
+   *
+   * No projection -- the column range 0 .. count-1
+   *
+   *    where count is the minimum of the target data type array size, included array size,
+   *       and source data type array size.
+   *
+   * @param sourceTypeInfos
+   * @param targetTypeInfos
+   * @param columnsToIncludeTruncated
+   *                Flag array indicating which columns are to be included.
+   *                "Truncated" because all false entries on the end of the array have been
+   *                eliminated.
+   * @return the minimum count described above is returned.  That is, the number of columns
+   *         that will be processed by assign.
+   */
+  public int initConversion(TypeInfo[] sourceTypeInfos, TypeInfo[] targetTypeInfos,
+      boolean[] columnsToIncludeTruncated) {
+
+    int targetColumnCount;
+    if (columnsToIncludeTruncated == null) {
+      targetColumnCount = targetTypeInfos.length;
+    } else {
+      targetColumnCount = Math.min(targetTypeInfos.length, columnsToIncludeTruncated.length);
+    }
+
+    int sourceColumnCount = Math.min(sourceTypeInfos.length, targetColumnCount);
+
+    allocateArrays(sourceColumnCount);
+    allocateConvertArrays(sourceColumnCount);
+
+    for (int i = 0; i < sourceColumnCount; i++) {
+
+      if (columnsToIncludeTruncated != null && !columnsToIncludeTruncated[i]) {
+
+        // Field not included in query.
 
-    TimestampAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
       } else {
-        colVector.set(batchIndex, ((TimestampWritable) object).getTimestamp());
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+        TypeInfo targetTypeInfo = targetTypeInfos[i];
 
-  private class IntervalYearMonthAssigner extends AbstractLongAssigner {
+        if (targetTypeInfo.getCategory() != ObjectInspector.Category.PRIMITIVE) {
 
-    IntervalYearMonthAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+          // For now, we don't have an assigner for complex types...
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        HiveIntervalYearMonthWritable iymw = (HiveIntervalYearMonthWritable) object;
-        HiveIntervalYearMonth iym = iymw.getHiveIntervalYearMonth();
-        vector[batchIndex] = iym.getTotalMonths();
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+        } else {
+          TypeInfo sourceTypeInfo = sourceTypeInfos[i];
 
-  private abstract class AbstractIntervalDayTimeAssigner extends Assigner {
+          if (!sourceTypeInfo.equals(targetTypeInfo)) {
 
-    protected IntervalDayTimeColumnVector colVector;
+            if (VectorPartitionConversion.isImplicitVectorColumnConversion(
+                sourceTypeInfo, targetTypeInfo)) {
 
-    AbstractIntervalDayTimeAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+              // Do implicit conversion accepting the source type and putting it in the same
+              // target type ColumnVector type.
+              initTargetEntry(i, i, sourceTypeInfo);
 
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (IntervalDayTimeColumnVector) batch.cols[columnIndex];
-    }
+            } else {
 
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-    }
-  }
+              // Do formal conversion...
+              initTargetEntry(i, i, targetTypeInfo);
+              initConvertSourceEntry(i, sourceTypeInfo);
 
-  private class IntervalDayTimeAssigner extends AbstractIntervalDayTimeAssigner {
+            }
+          } else {
 
-    IntervalDayTimeAssigner(int columnIndex) {
-      super(columnIndex);
-    }
+            // No conversion.
+            initTargetEntry(i, i, targetTypeInfo);
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        HiveIntervalDayTimeWritable idtw = (HiveIntervalDayTimeWritable) object;
-        HiveIntervalDayTime idt = idtw.getHiveIntervalDayTime();
-        colVector.set(batchIndex, idt);
-        colVector.isNull[batchIndex] = false;
+          }
+        }
       }
     }
-  }
-
-  private abstract class AbstractDoubleAssigner extends Assigner {
-
-    protected DoubleColumnVector colVector;
-    protected double[] vector;
-
-    AbstractDoubleAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (DoubleColumnVector) batch.cols[columnIndex];
-      vector = colVector.vector;
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-      vector = null;
-    }
-  }
-
-  private class FloatAssigner extends AbstractDoubleAssigner {
-
-    FloatAssigner(int columnIndex) {
-      super(columnIndex);
-    }
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        FloatWritable fw = (FloatWritable) object;
-        vector[batchIndex] = fw.get();
-        colVector.isNull[batchIndex] = false;
-      }
-    }
+    return sourceColumnCount;
   }
 
-  private class DoubleAssigner extends AbstractDoubleAssigner {
-
-    DoubleAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        DoubleWritable dw = (DoubleWritable) object;
-        vector[batchIndex] = dw.get();
-        colVector.isNull[batchIndex] = false;
+  /**
+   * Assign a row's column object to the ColumnVector at batchIndex in the VectorizedRowBatch.
+   *
+   * @param batch
+   * @param batchIndex
+   * @param logicalColumnIndex
+   * @param object    The row column object whose type is the target data type.
+   */
+  public void assignRowColumn(VectorizedRowBatch batch, int batchIndex, int logicalColumnIndex,
+      Object object) {
+    final int projectionColumnNum = projectionColumnNums[logicalColumnIndex];
+    if (object == null) {
+      VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+      return;
+    }
+    Category targetCategory = targetCategories[logicalColumnIndex];
+    if (targetCategory == null) {
+      /*
+       * This is a column that we don't want (i.e. not included) -- we are done.
+       */
+      return;
+    }
+    switch (targetCategory) {
+    case PRIMITIVE:
+      {
+        PrimitiveCategory targetPrimitiveCategory = targetPrimitiveCategories[logicalColumnIndex];
+        switch (targetPrimitiveCategory) {
+        case VOID:
+          VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+          return;
+        case BOOLEAN:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              (((BooleanWritable) object).get() ? 1 : 0);
+          break;
+        case BYTE:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+             ((ByteWritable) object).get();
+          break;
+        case SHORT:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              ((ShortWritable) object).get();
+          break;
+        case INT:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              ((IntWritable) object).get();
+          break;
+        case LONG:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              ((LongWritable) object).get();
+          break;
+        case TIMESTAMP:
+          ((TimestampColumnVector) batch.cols[projectionColumnNum]).set(
+              batchIndex, ((TimestampWritable) object).getTimestamp());
+          break;
+        case DATE:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+             ((DateWritable) object).getDays();
+          break;
+        case FLOAT:
+          ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              ((FloatWritable) object).get();
+          break;
+        case DOUBLE:
+          ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              ((DoubleWritable) object).get();
+          break;
+        case BINARY:
+          {
+            BytesWritable bw = (BytesWritable) object;
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, bw.getBytes(), 0, bw.getLength());
+          }
+          break;
+        case STRING:
+          {
+            Text tw = (Text) object;
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, tw.getBytes(), 0, tw.getLength());
+          }
+          break;
+        case VARCHAR:
+          {
+            // UNDONE: Performance problem with conversion to String, then bytes...
+
+            // We store VARCHAR type stripped of pads.
+            HiveVarchar hiveVarchar;
+            if (object instanceof HiveVarchar) {
+              hiveVarchar = (HiveVarchar) object;
+            } else {
+              hiveVarchar = ((HiveVarcharWritable) object).getHiveVarchar();
+            }
+
+            // TODO: HIVE-13624 Do we need maxLength checking?
+
+            byte[] bytes = hiveVarchar.getValue().getBytes();
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, bytes, 0, bytes.length);
+          }
+          break;
+        case CHAR:
+          {
+            // UNDONE: Performance problem with conversion to String, then bytes...
+
+            // We store CHAR type stripped of pads.
+            HiveChar hiveChar;
+            if (object instanceof HiveChar) {
+              hiveChar = (HiveChar) object;
+            } else {
+              hiveChar = ((HiveCharWritable) object).getHiveChar();
+            }
+
+            // TODO: HIVE-13624 Do we need maxLength checking?
+
+            // We store CHAR in vector row batch with padding stripped.
+            byte[] bytes = hiveChar.getStrippedValue().getBytes();
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, bytes, 0, bytes.length);
+          }
+          break;
+        case DECIMAL:
+          if (object instanceof HiveDecimal) {
+            ((DecimalColumnVector) batch.cols[projectionColumnNum]).set(
+                batchIndex, (HiveDecimal) object);
+          } else {
+            ((DecimalColumnVector) batch.cols[projectionColumnNum]).set(
+                batchIndex, (HiveDecimalWritable) object);
+          }
+          break;
+        case INTERVAL_YEAR_MONTH:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              ((HiveIntervalYearMonthWritable) object).getHiveIntervalYearMonth().getTotalMonths();
+          break;
+        case INTERVAL_DAY_TIME:
+          ((IntervalDayTimeColumnVector) batch.cols[projectionColumnNum]).set(
+              batchIndex, ((HiveIntervalDayTimeWritable) object).getHiveIntervalDayTime());
+          break;
+        default:
+          throw new RuntimeException("Primitive category " + targetPrimitiveCategory.name() +
+              " not supported");
+        }
       }
-    }
-  }
-
-  private abstract class AbstractBytesAssigner extends Assigner {
-
-    protected BytesColumnVector colVector;
-
-    AbstractBytesAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (BytesColumnVector) batch.cols[columnIndex];
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-    }
-  }
-
-  private class BinaryAssigner extends AbstractBytesAssigner {
-
-    BinaryAssigner(int columnIndex) {
-      super(columnIndex);
+      break;
+    default:
+      throw new RuntimeException("Category " + targetCategory.name() + " not supported");
     }
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        BytesWritable bw = (BytesWritable) object;
-        colVector.setVal(batchIndex, bw.getBytes(), 0, bw.getLength());
-        colVector.isNull[batchIndex] = false;
-      }
-    }
+    /*
+     * We always set the null flag to false when there is a value.
+     */
+    batch.cols[projectionColumnNum].isNull[batchIndex] = false;
   }
 
-  private class StringAssigner extends AbstractBytesAssigner {
-
-    StringAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        Text tw = (Text) object;
-        colVector.setVal(batchIndex, tw.getBytes(), 0, tw.getLength());
-        colVector.isNull[batchIndex] = false;
+  /**
+   * Convert row's column object and then assign it the ColumnVector at batchIndex
+   * in the VectorizedRowBatch.
+   *
+   * Public so VectorDeserializeRow can use this method to convert a row's column object.
+   *
+   * @param batch
+   * @param batchIndex
+   * @param logicalColumnIndex
+   * @param object    The row column object whose type is the VectorAssignRow.initConversion
+   *                  source data type.
+   *
+   */
+  public void assignConvertRowColumn(VectorizedRowBatch batch, int batchIndex,
+      int logicalColumnIndex, Object object) {
+    Preconditions.checkState(isConvert[logicalColumnIndex]);
+    final int projectionColumnNum = projectionColumnNums[logicalColumnIndex];
+    if (object == null) {
+      VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+      return;
+    }
+    try {
+      Category targetCategory = targetCategories[logicalColumnIndex];
+      if (targetCategory == null) {
+        /*
+         * This is a column that we don't want (i.e. not included) -- we are done.
+         */
+        return;
       }
-    }
-  }
-
-  private class VarCharAssigner extends AbstractBytesAssigner {
-
-    VarCharAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        // We store VARCHAR type stripped of pads.
-        HiveVarchar hiveVarchar;
-        if (object instanceof HiveVarchar) {
-          hiveVarchar = (HiveVarchar) object;
-        } else {
-          hiveVarchar = ((HiveVarcharWritable) object).getHiveVarchar();
+      switch (targetCategory) {
+      case PRIMITIVE:
+        PrimitiveCategory targetPrimitiveCategory = targetPrimitiveCategories[logicalColumnIndex];
+        switch (targetPrimitiveCategory) {
+        case VOID:
+          VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+          return;
+        case BOOLEAN:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              (PrimitiveObjectInspectorUtils.getBoolean(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]) ? 1 : 0);
+          break;
+        case BYTE:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              PrimitiveObjectInspectorUtils.getByte(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+          break;
+        case SHORT:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              PrimitiveObjectInspectorUtils.getShort(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+          break;
+        case INT:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              PrimitiveObjectInspectorUtils.getInt(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+          break;
+        case LONG:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              PrimitiveObjectInspectorUtils.getLong(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+          break;
+        case TIMESTAMP:
+          {
+            Timestamp timestamp =
+              PrimitiveObjectInspectorUtils.getTimestamp(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (timestamp == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            ((TimestampColumnVector) batch.cols[projectionColumnNum]).set(
+                batchIndex, timestamp);
+          }
+          break;
+        case DATE:
+          {
+            Date date = PrimitiveObjectInspectorUtils.getDate(
+                object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (date == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            DateWritable dateWritable = (DateWritable) convertTargetWritables[logicalColumnIndex];
+            dateWritable.set(date);
+            ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+                dateWritable.getDays();
+          }
+          break;
+        case FLOAT:
+          ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              PrimitiveObjectInspectorUtils.getFloat(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+          break;
+        case DOUBLE:
+          ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              PrimitiveObjectInspectorUtils.getDouble(
+                  object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+          break;
+        case BINARY:
+          {
+            BytesWritable bytesWritable =
+                PrimitiveObjectInspectorUtils.getBinary(
+                    object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (bytesWritable == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, bytesWritable.getBytes(), 0, bytesWritable.getLength());
+          }
+          break;
+        case STRING:
+          {
+            String string = PrimitiveObjectInspectorUtils.getString(
+                object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (string == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            Text text = (Text) convertTargetWritables[logicalColumnIndex];
+            text.set(string);
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, text.getBytes(), 0, text.getLength());
+          }
+          break;
+        case VARCHAR:
+          {
+            // UNDONE: Performance problem with conversion to String, then bytes...
+
+            HiveVarchar hiveVarchar =
+                PrimitiveObjectInspectorUtils.getHiveVarchar(
+                    object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (hiveVarchar == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+
+            // TODO: Do we need maxLength checking?
+
+            byte[] bytes = hiveVarchar.getValue().getBytes();
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, bytes, 0, bytes.length);
+          }
+          break;
+        case CHAR:
+          {
+            // UNDONE: Performance problem with conversion to String, then bytes...
+
+            HiveChar hiveChar =
+                PrimitiveObjectInspectorUtils.getHiveChar(
+                    object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (hiveChar == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            // We store CHAR in vector row batch with padding stripped.
+
+            // TODO: Do we need maxLength checking?
+
+            byte[] bytes = hiveChar.getStrippedValue().getBytes();
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex, bytes, 0, bytes.length);
+          }
+          break;
+        case DECIMAL:
+          {
+            HiveDecimal hiveDecimal =
+                PrimitiveObjectInspectorUtils.getHiveDecimal(
+                    object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (hiveDecimal == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            ((DecimalColumnVector) batch.cols[projectionColumnNum]).set(
+                batchIndex, hiveDecimal);
+          }
+          break;
+        case INTERVAL_YEAR_MONTH:
+          {
+            HiveIntervalYearMonth intervalYearMonth =
+                PrimitiveObjectInspectorUtils.getHiveIntervalYearMonth(
+                    object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (intervalYearMonth == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+                intervalYearMonth.getTotalMonths();
+          }
+          break;
+        case INTERVAL_DAY_TIME:
+          {
+            HiveIntervalDayTime intervalDayTime =
+                PrimitiveObjectInspectorUtils.getHiveIntervalDayTime(
+                    object, convertSourcePrimitiveObjectInspectors[logicalColumnIndex]);
+            if (intervalDayTime == null) {
+              VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+              return;
+            }
+            ((IntervalDayTimeColumnVector) batch.cols[projectionColumnNum]).set(
+                batchIndex, intervalDayTime);
+          }
+          break;
+        default:
+          throw new RuntimeException("Primitive category " + targetPrimitiveCategory.name() +
+              " not supported");
         }
-        byte[] bytes = hiveVarchar.getValue().getBytes();
-        colVector.setVal(batchIndex, bytes, 0, bytes.length);
-        colVector.isNull[batchIndex] = false;
+        break;
+      default:
+        throw new RuntimeException("Category " + targetCategory.name() + " not supported");
       }
-    }
-  }
-
-  private class CharAssigner extends AbstractBytesAssigner {
+    } catch (NumberFormatException e) {
 
-    CharAssigner(int columnIndex) {
-      super(columnIndex);
+      // Some of the conversion methods throw this exception on numeric parsing errors.
+      VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+      return;
     }
 
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        // We store CHAR type stripped of pads.
-        HiveChar hiveChar;
-        if (object instanceof HiveChar) {
-          hiveChar = (HiveChar) object;
-        } else {
-          hiveChar = ((HiveCharWritable) object).getHiveChar();
-        }
-
-        // We store CHAR in vector row batch with padding stripped.
-        byte[] bytes = hiveChar.getStrippedValue().getBytes();
-        colVector.setVal(batchIndex, bytes, 0, bytes.length);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
+    // We always set the null flag to false when there is a value.
+    batch.cols[projectionColumnNum].isNull[batchIndex] = false;
   }
 
-  private class DecimalAssigner extends Assigner {
-
-    protected DecimalColumnVector colVector;
-
-    DecimalAssigner(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (DecimalColumnVector) batch.cols[columnIndex];
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-    }
-
-    @Override
-    void assign(int batchIndex, Object object) {
-      if (object == null) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
+  /*
+   * Assign a row from an array of objects.
+   */
+  public void assignRow(VectorizedRowBatch batch, int batchIndex, Object[] objects) {
+    final int count = isConvert.length;
+    for (int i = 0; i < count; i++) {
+      if (isConvert[i]) {
+        assignConvertRowColumn(batch, batchIndex, i, objects[i]);
       } else {
-        if (object instanceof HiveDecimal) {
-          colVector.set(batchIndex, (HiveDecimal) object); 
-        } else {
-          colVector.set(batchIndex, (HiveDecimalWritable) object);
-        }
-        colVector.isNull[batchIndex] = false;
+        assignRowColumn(batch, batchIndex, i, objects[i]);
       }
     }
   }
 
-  private Assigner createAssigner(PrimitiveTypeInfo primitiveTypeInfo, int columnIndex) throws HiveException {
-    PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
-    Assigner assigner;
-    switch (primitiveCategory) {
-    case VOID:
-      assigner = new VoidAssigner(columnIndex);
-      break;
-    case BOOLEAN:
-      assigner = new BooleanAssigner(columnIndex);
-      break;
-    case BYTE:
-      assigner = new ByteAssigner(columnIndex);
-      break;
-    case SHORT:
-      assigner = new ShortAssigner(columnIndex);
-      break;
-    case INT:
-      assigner = new IntAssigner(columnIndex);
-      break;
-    case LONG:
-      assigner = new LongAssigner(columnIndex);
-      break;
-    case TIMESTAMP:
-      assigner = new TimestampAssigner(columnIndex);
-      break;
-    case DATE:
-      assigner = new DateAssigner(columnIndex);
-      break;
-    case FLOAT:
-      assigner = new FloatAssigner(columnIndex);
-      break;
-    case DOUBLE:
-      assigner = new DoubleAssigner(columnIndex);
-      break;
-    case BINARY:
-      assigner = new BinaryAssigner(columnIndex);
-      break;
-    case STRING:
-      assigner = new StringAssigner(columnIndex);
-      break;
-    case VARCHAR:
-      assigner = new VarCharAssigner(columnIndex);
-      break;
-    case CHAR:
-      assigner = new CharAssigner(columnIndex);
-      break;
-    case DECIMAL:
-      assigner = new DecimalAssigner(columnIndex);
-      break;
-    case INTERVAL_YEAR_MONTH:
-      assigner = new IntervalYearMonthAssigner(columnIndex);
-      break;
-    case INTERVAL_DAY_TIME:
-      assigner = new IntervalDayTimeAssigner(columnIndex);
-      break;
-    default:
-      throw new HiveException("No vector row assigner for primitive category " +
-          primitiveCategory);
-    }
-    return assigner;
-  }
-
-  Assigner[] assigners;
-
-  public void init(StructObjectInspector structObjectInspector, List<Integer> projectedColumns) throws HiveException {
-
-    List<? extends StructField> fields = structObjectInspector.getAllStructFieldRefs();
-    assigners = new Assigner[fields.size()];
-
-    int i = 0;
-    for (StructField field : fields) {
-      int columnIndex = projectedColumns.get(i);
-      ObjectInspector fieldInspector = field.getFieldObjectInspector();
-      PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) TypeInfoUtils.getTypeInfoFromTypeString(
-                  fieldInspector.getTypeName());
-      assigners[i] = createAssigner(primitiveTypeInfo, columnIndex);
-      i++;
-    }
-  }
-
-  public void init(List<String> typeNames) throws HiveException {
-
-    assigners = new Assigner[typeNames.size()];
-
-    int i = 0;
-    for (String typeName : typeNames) {
-      PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) TypeInfoUtils.getTypeInfoFromTypeString(typeName);
-      assigners[i] = createAssigner(primitiveTypeInfo, i);
-      i++;
-    }
-  }
+  /*
+   * Assign a row from a list of standard objects up to a count
+   */
+  public void assignRow(VectorizedRowBatch batch, int batchIndex,
+      List<Object> standardObjects, int columnCount) {
 
-  protected void setBatch(VectorizedRowBatch batch) throws HiveException {
-    for (int i = 0; i < assigners.length; i++) {
-      Assigner assigner = assigners[i];
-      int columnIndex = assigner.getColumnIndex();
-      if (batch.cols[columnIndex] == null) {
-        throw new HiveException("Unexpected null vector column " + columnIndex);
+    for (int i = 0; i < columnCount; i++) {
+      if (isConvert[i]) {
+        assignConvertRowColumn(batch, batchIndex, i, standardObjects.get(i));
+      } else {
+        assignRowColumn(batch, batchIndex, i, standardObjects.get(i));
       }
-      assigner.setColumnVector(batch);
-    }
-  }
-
-  protected void forgetBatch() {
-    for (Assigner assigner : assigners) {
-      assigner.forgetColumnVector();
     }
   }
-
-  public void assignRowColumn(int batchIndex, int logicalColumnIndex, Object object) {
-    assigners[logicalColumnIndex].assign(batchIndex, object);
-  }
-
-  public void assignRow(int batchIndex, Object[] objects) {
-    int i = 0;
-    for (Assigner assigner : assigners) {
-      assigner.assign(batchIndex, objects[i++]);
-    }
-  }
-
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowDynBatch.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowDynBatch.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowDynBatch.java
deleted file mode 100644
index a696825..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowDynBatch.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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.ql.exec.vector;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * This class assigns specified columns of a VectorizedRowBatch row from a Writable row Object[].
- *
- * The caller provides the hive type names and target column numbers in the order desired to
- * assign from the Writable row Object[].
- *
- * This class is for use when the batch being assigned may change each time before processOp
- * is called.
- */
-public class VectorAssignRowDynBatch extends VectorAssignRow {
-
-  public void setBatchOnEntry(VectorizedRowBatch batch) throws HiveException {
-    setBatch(batch);
-  }
-
-  public void forgetBatchOnExit() {
-    forgetBatch();
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowSameBatch.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowSameBatch.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowSameBatch.java
deleted file mode 100644
index 8c7c2ad..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAssignRowSameBatch.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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.ql.exec.vector;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * This class assigns specified columns of a VectorizedRowBatch row from a Writable row Object[].
- *
- * The caller provides the hive type names and target column numbers in the order desired to
- * assign from the Writable row Object[].
- *
- * This class is for use when the batch being assigned is always the same.
- */
-public class VectorAssignRowSameBatch extends VectorAssignRow {
-
-  public void setOneBatch(VectorizedRowBatch batch) throws HiveException {
-    setBatch(batch);
-  }
-}
\ No newline at end of file


[34/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q
new file mode 100644
index 0000000..3b8d8e4
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q
@@ -0,0 +1,509 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=false;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING);
+
+insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new');
+
+insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+drop table part_change_various_various_boolean;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING);
+
+insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new');
+
+insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+drop table part_change_various_various_tinyint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING);
+
+insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new');
+
+insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+drop table part_change_various_various_smallint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING);
+
+insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new');
+
+insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+drop table part_change_various_various_int;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING);
+
+insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new');
+
+insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+drop table part_change_various_various_bigint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_float replace columns (insert_num int, c1 FLOAT, c2 FLOAT, c3 FLOAT, c4 FLOAT, c5 FLOAT, c6 FLOAT, c7 FLOAT, c8 FLOAT, c9 FLOAT, c10 FLOAT, c11 FLOAT, b STRING);
+
+insert into table part_change_various_various_float partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, -3651.67212, 46114.28, 'new');
+
+insert into table part_change_various_various_float partition(part=1)
+    values (6, -1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -93222.200, 29.076, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+drop table part_change_various_various_float;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> DOUBLE
+--
+CREATE TABLE part_change_various_various_double(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_double partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE, b STRING);
+
+insert into table part_change_various_various_double partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, 0.00007011717, 4.28479948, 'new');
+
+insert into table part_change_various_various_double partition(part=1)
+    values (6, -1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -66475.0000008, -284799488.1, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+drop table part_change_various_various_double;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, STRING, CHAR, VARCHAR, TIMESTAMP) --> DECIMAL
+--
+CREATE TABLE part_change_various_various_decimal(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_decimal partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '--1551801.09502', '--1551801.09502', '--1551801.09502', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '2402.3', '2402.3', '2402.3', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_decimal replace columns (insert_num int, c1 DECIMAL(38,18), c2 DECIMAL(38,18), c3 DECIMAL(38,18), c4 DECIMAL(38,18), c5 DECIMAL(38,18), c6 DECIMAL(38,18), c7 DECIMAL(38,18), c8 DECIMAL(38,18), c9 DECIMAL(38,18), c10 DECIMAL(38,18), c11 DECIMAL(38,18), b STRING);
+
+insert into table part_change_various_various_decimal partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, 0.00007011717, 4.28479948, 'new');
+
+insert into table part_change_various_various_decimal partition(part=1)
+    values (6,-1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -66475.0000008, -284799488.1, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+drop table part_change_various_various_decimal;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY) --> STRING
+--
+CREATE TABLE part_change_various_various_string(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_string partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,          '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING, c8 STRING, c9 STRING, c10 STRING, c11 STRING, c12 STRING, c13 STRING, b STRING);
+
+insert into table part_change_various_various_string partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_string partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+drop table part_change_various_various_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, VARCHAR, TIMESTAMP, DATE, BINARY) --> CHAR
+--
+CREATE TABLE part_change_various_various_char(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 VARCHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_char partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_char replace columns (insert_num int, c1 CHAR(25), c2 CHAR(25), c3 CHAR(25), c4 CHAR(25), c5 CHAR(25), c6 CHAR(25), c7 CHAR(25), c8 CHAR(25), c9 CHAR(25), c10 CHAR(25), c11 CHAR(25), c12 CHAR(25), c13 CHAR(25), b STRING);
+
+insert into table part_change_various_various_char partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_char partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+drop table part_change_various_various_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, VARCHAR, TIMESTAMP, DATE, BINARY) --> CHAR trunc
+--
+CREATE TABLE part_change_various_various_char_trunc(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 VARCHAR(8), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_char_trunc partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_char_trunc replace columns (insert_num int, c1 CHAR(8), c2 CHAR(8), c3 CHAR(8), c4 CHAR(8), c5 CHAR(8), c6 CHAR(8), c7 CHAR(8), c8 CHAR(8), c9 CHAR(8), c10 CHAR(8), c11 CHAR(8), c12 CHAR(8), c13 CHAR(8), b STRING);
+
+insert into table part_change_various_various_char_trunc partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_char_trunc partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+drop table part_change_various_various_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, TIMESTAMP, DATE, BINARY) --> VARCHAR
+--
+CREATE TABLE part_change_various_various_varchar(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_varchar partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_varchar replace columns (insert_num int, c1 VARCHAR(25), c2 VARCHAR(25), c3 VARCHAR(25), c4 VARCHAR(25), c5 VARCHAR(25), c6 VARCHAR(25), c7 VARCHAR(25), c8 VARCHAR(25), c9 VARCHAR(25), c10 VARCHAR(25), c11 VARCHAR(25), c12 VARCHAR(25), c13 VARCHAR(25), b STRING);
+
+insert into table part_change_various_various_varchar partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_varchar partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+drop table part_change_various_various_varchar;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, TIMESTAMP, DATE, BINARY) --> VARCHAR trunc
+--
+CREATE TABLE part_change_various_various_varchar_trunc(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_varchar_trunc partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_varchar_trunc replace columns (insert_num int, c1 VARCHAR(8), c2 VARCHAR(8), c3 VARCHAR(8), c4 VARCHAR(8), c5 VARCHAR(8), c6 VARCHAR(8), c7 VARCHAR(8), c8 VARCHAR(8), c9 VARCHAR(8), c10 VARCHAR(8), c11 VARCHAR(8), c12 VARCHAR(8), c13 VARCHAR(8), b STRING);
+
+insert into table part_change_various_various_varchar_trunc partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_varchar_trunc partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+drop table part_change_various_various_varchar_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, VARCHAR, DATE) --> TIMESTAMP
+--
+CREATE TABLE part_change_various_various_timestamp(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 VARCHAR(25), c12 DATE, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_timestamp partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876',  '2007-02-09 05:17:29.368756876', '0004-09-22', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,          '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179',  '6229-06-28 02:54:28.970117179', '5966-07-09', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073',  '2002-05-10 05:29:48.990818073', '1815-05-06', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_timestamp replace columns (insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, c6 TIMESTAMP, c7 TIMESTAMP, c8 TIMESTAMP, c9 TIMESTAMP, c10 TIMESTAMP, c11 TIMESTAMP, c12 TIMESTAMP, b STRING);
+
+insert into table part_change_various_various_timestamp partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'timestamp', 'timestamp', 'timestamp', 'date', 'new');
+
+insert into table part_change_various_various_timestamp partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      '2016-03-07 03:02:22.0',   '2016-03-07 03:02:22.0',  '2016-03-07 03:02:22.0', '2016-03-07', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+drop table part_change_various_various_timestamp;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (STRING, CHAR, VARCHAR, TIMESTAMP --> DATE
+--
+CREATE TABLE part_change_various_various_date(insert_num int, c1 STRING, c2 CHAR(25), c3 VARCHAR(25), c4 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_date partition(part=1)
+    values(1, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222',  '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876',  '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179',  '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073',  '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_date replace columns (insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, b STRING);
+
+insert into table part_change_various_various_date partition(part=2)
+    values (5, '2016-03-07', '2016-03-07', '2016-03-07', '2016-03-07', 'new');
+
+insert into table part_change_various_various_date partition(part=1)
+    values (6,-'2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10','new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+drop table part_change_various_various_date;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (STRING, CHAR, VARCHAR) --> BINARY
+--
+CREATE TABLE part_change_various_various_binary(insert_num int, c1 STRING, c2 CHAR(25), c3 VARCHAR(25), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_binary partition(part=1)
+    values(1, 'binary', 'binary',  'binary', 'original'),
+          (2, 'binary', 'binary',  'binary', 'original'),
+          (3, 'binary', 'binary',  'binary', 'original'),
+          (4, 'binary', 'binary',  'binary', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_binary replace columns (insert_num int, c1 BINARY, c2 BINARY, c3 BINARY, b STRING);
+
+insert into table part_change_various_various_binary partition(part=2)
+    values (5, 'binary', 'binary', 'binary', 'new');
+
+insert into table part_change_various_various_binary partition(part=1)
+    values (6,-'binary', 'binary', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+drop table part_change_various_various_binary;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_table.q
index 83cab14..1b408dd 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_table.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_table.q
@@ -1,67 +1,821 @@
+set hive.explain.user=true;
 set hive.cli.print.header=true;
 SET hive.exec.schema.evolution=true;
-SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.execution.enabled=false;
 set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=true;
+set hive.default.fileformat=textfile;
 
 -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
 --
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE;
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING);
+DESCRIBE FORMATTED table_add_int_permute_select;
+
+insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int);
+DESCRIBE FORMATTED table_add_int_permute_select;
+
+insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40);
+
+insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200);
+
+explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num;
+select insert_num,a,b,c from table_add_int_permute_select order by insert_num;
+select insert_num,c from table_add_int_permute_select order by insert_num;
+
+drop table table_add_int_permute_select;
+
+
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING);
+DESCRIBE FORMATTED table_add_int_string_permute_select;
+
+insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string);
+DESCRIBE FORMATTED table_add_int_string_permute_select;
+
+insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty');
+
+insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred');
+
+explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,c from table_add_int_string_permute_select order by insert_num;
+select insert_num,d from table_add_int_string_permute_select order by insert_num;
+
+drop table table_add_int_string_permute_select;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING);
+
+insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING);
+
+insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new');
+
+insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num;
+
+drop table table_change_string_group_double;
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING);
+
+insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new');
+insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num;
+
+drop table table_change_date_group_string_group_timestamp;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING);
+
+insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);DESCRIBE FORMATTED table_change_date_group_string_group_date;
+
+insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num;
+
+drop table table_change_date_group_string_group_date;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
 
-insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
+insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
 
-select a,b from table1;
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
 
--- ADD COLUMNS
-alter table table1 add columns(c int, d string);
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING) ;
 
-insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty');
+insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
 
-select a,b,c,d from table1;
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
 
--- ADD COLUMNS
-alter table table1 add columns(e string);
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
 
-insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2');
+drop table table_change_numeric_group_string_group_multi_ints_string;
 
-select a,b,c,d,e from table1;
 
 
 --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
 --
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE;
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
 
-insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
+insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
 
-select a,b from table3;
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
 
--- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int;
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_varchar(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), c4 VARCHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_varchar_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_varchar_trunc replace columns (insert_num int, c1 VARCHAR(5), c2 VARCHAR(5), c3 VARCHAR(5), c4 VARCHAR(5), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_varchar_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (FLOAT, DOUBLE, DECIMAL), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_string(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_string
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, - 832222222, 255, 4957,'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_string
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_string;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_char(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_char
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3,  9000000000, -255, 4957,'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_char
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_char_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
 
-insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new');
+insert into table table_change_numeric_group_string_group_floating_char_trunc
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 832222222, -255, 4957, 'original'),
+           (4, 847492223, 0, 20435, 'original');
 
-select a,b from table3;
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
 
--- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string);
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_char_trunc replace columns (insert_num int, c1 CHAR(7), c2 CHAR(7), c3 CHAR(7), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_char_trunc
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_char_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_varchar(insert_num int, c1 float, c2 double, c3 decimal(38,18), b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_varchar
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_varchar
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_varchar_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_varchar_trunc
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_varchar_trunc replace columns (insert_num int, c1 VARCHAR(7), c2 VARCHAR(7), c3 VARCHAR(7), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_varchar_trunc
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_varchar_trunc;
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: STRING, (CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_string_group_string_group_string(insert_num int, c1 string, c2 string, c3 string, c4 string, b STRING);
+
+insert into table table_change_string_group_string_group_string
+    values (1, 'escapist', 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_string replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 VARCHAR(50), c4 CHAR(9), b STRING) ;
+
+insert into table table_change_string_group_string_group_string
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+drop table table_change_string_group_string_group_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: CHAR, (VARCHAR, VARCHAR trunc, STRING)
+--
+CREATE TABLE table_change_string_group_string_group_char(insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING);
+
+insert into table table_change_string_group_string_group_char
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_char replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(9), c3 STRING, b STRING) ;
+
+insert into table table_change_string_group_string_group_char
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+drop table table_change_string_group_string_group_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: VARCHAR, (CHAR, CHAR trunc, STRING)
+--
+CREATE TABLE table_change_string_group_string_group_varchar(insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING);
+
+insert into table table_change_string_group_string_group_varchar
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_varchar replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 STRING, b STRING) ;
+
+insert into table table_change_string_group_string_group_varchar
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+drop table table_change_string_group_string_group_varchar;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: TINYINT, (SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_tinyint(insert_num int, c1 tinyint, c2 tinyint, c3 tinyint, c4 tinyint, c5 tinyint, c6 tinyint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_tinyint
+    values (1, 45, 45, 45, 45, 45, 45, 'original'),
+           (2, -2, -2, -2, -2, -2, -2, 'original'),
+           (3, -255, -255, -255, -255, -255, -255, 'original'),
+           (4, 100, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_tinyint replace columns (insert_num int, c1 SMALLINT, c2 INT, c3 BIGINT, c4 decimal(38,18), c5 FLOAT, c6 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_tinyint
+    values (5, '774', '2031', '200', '12', '99', '0', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', '7', '6', 'new'),
+           (7, '256', '32768', '31889', '300', '444', '506', 'new'),
+           (8, '5555', '40000', '-719017797', '45', '55', '65', 'new'),
+           (9, '100', '5000', '5443', '22', '2', '-2', 'new'),
+           (10, '17', '90000', '754072151', '95', '20', '18', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_tinyint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: SMALLINT, (INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_smallint(insert_num int, c1 smallint, c2 smallint, c3 smallint, c4 smallint, c5 smallint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_smallint
+    values (1, 2031, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, -5000, 'original'),
+           (4, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_smallint replace columns (insert_num int, c1 INT, c2 BIGINT, c3 decimal(38,18), c4 FLOAT, c5 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_smallint
+    values (5, '774', '2031', '200', '12', '99', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', '7', 'new'),
+           (7, '256', '32768', '31889', '300', '444', 'new'),
+           (8, '5555', '40000', '-719017797', '45', '55', 'new'),
+           (9, '100', '5000', '5443', '22', '2', 'new'),
+           (10, '17', '90000', '754072151', '95', '20', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_smallint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: INT, (BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_int(insert_num int, c1 int, c2 int, c3 int, c4 int, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_int
+    values (1, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_int replace columns (insert_num int, c1 BIGINT, c2 decimal(38,18), c3 FLOAT, c4 DOUBLE,  b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_int
+    values (5, '774', '2031', '200', '12', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', 'new'),
+           (7, '256', '32768', '31889', '300', 'new'),
+           (8, '5555', '40000', '-719017797', '45', 'new'),
+           (9, '100', '5000', '5443', '22', 'new'),
+           (10, '17', '90000', '754072151', '95', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_int;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: BIGINT, (DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_bigint(insert_num int, c1 bigint, c2 bigint, c3 bigint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_bigint
+    values (1, 7203778961, 7203778961, 7203778961, 'original'),
+           (2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_bigint replace columns (insert_num int, c1 decimal(38,18), c2 FLOAT, c3 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_bigint
+    values (5, '774', '2031', '200', 'new'),
+           (6, '561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_bigint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: DECIMAL, (FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_decimal(insert_num int, c1 decimal(38,18), c2 decimal(38,18), b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_decimal
+    values (1, -29.0764, -29.0764, 'original'),
+           (2, 753.7028, 753.7028, 'original'),
+           (3, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_decimal replace columns (insert_num int, c1 float, c2 double, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_decimal
+    values (5, '7.74', '22.3', 'new'),
+           (6, '56.1431', '90.9', 'new'),
+           (7, '2.56', '25.6', 'new'),
+           (8, '555.5', '55.55', 'new'),
+           (9, '10.0', '0.100', 'new'),
+           (10, '1.7', '17.8888', 'new');
+
+explain
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_decimal;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: FLOAT, (DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_float(insert_num int, c1 float, b STRING);
 
-insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6');
+insert into table table_change_lower_to_higher_numeric_group_float
+    values (1, -29.0764, 'original'),
+           (2, 753.7028, 'original'),
+           (3, -5000, 'original'),
+           (4, 52927714, 'original');
 
-select a,b from table3;
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
 
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_float replace columns (insert_num int, c1 DOUBLE, b STRING) ;
 
--- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int;
+insert into table table_change_lower_to_higher_numeric_group_float
+    values (5, '774', 'new'),
+           (6, '561431', 'new'),
+           (7, '256', 'new'),
+           (8, '5555', 'new'),
+           (9, '100', 'new'),
+           (10, '17', 'new');
 
-select a,b from table3;
+explain
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
 
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
 
-DROP TABLE table1;
-DROP TABLE table2;
-DROP TABLE table3;
\ No newline at end of file
+drop table table_change_lower_to_higher_numeric_group_float;
\ No newline at end of file


[36/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
index 1ddd9be..4a156a2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
@@ -29,7 +29,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Properties;
 import java.util.Set;
 import java.util.Stack;
 import java.util.regex.Pattern;
@@ -38,7 +37,6 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.metastore.api.hive_metastoreConstants;
 import org.apache.hadoop.hive.ql.exec.*;
 import org.apache.hadoop.hive.ql.exec.mr.MapRedTask;
 import org.apache.hadoop.hive.ql.exec.persistence.MapJoinKey;
@@ -98,7 +96,6 @@ import org.apache.hadoop.hive.ql.plan.JoinDesc;
 import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
 import org.apache.hadoop.hive.ql.plan.MapWork;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
-import org.apache.hadoop.hive.ql.plan.VectorPartitionConversion;
 import org.apache.hadoop.hive.ql.plan.PartitionDesc;
 import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
 import org.apache.hadoop.hive.ql.plan.ReduceWork;
@@ -113,6 +110,7 @@ import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc;
 import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableImplementationType;
 import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableKeyType;
 import org.apache.hadoop.hive.ql.plan.VectorMapJoinDesc.HashTableKind;
+import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc.VectorDeserializeType;
 import org.apache.hadoop.hive.ql.plan.VectorReduceSinkDesc;
 import org.apache.hadoop.hive.ql.plan.VectorReduceSinkInfo;
 import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc;
@@ -160,8 +158,12 @@ import org.apache.hadoop.hive.ql.udf.UDFYear;
 import org.apache.hadoop.hive.ql.udf.generic.*;
 import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.Deserializer;
+import org.apache.hadoop.hive.serde2.NullStructSerDe;
+import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;
+import org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
@@ -169,8 +171,10 @@ import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import org.apache.hadoop.mapred.SequenceFileInputFormat;
+import org.apache.hadoop.mapred.TextInputFormat;
 
-import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
 
 public class Vectorizer implements PhysicalPlanResolver {
 
@@ -184,8 +188,15 @@ public class Vectorizer implements PhysicalPlanResolver {
   Set<String> supportedAggregationUdfs = new HashSet<String>();
 
   private HiveConf hiveConf;
+
   private boolean isSpark;
 
+  boolean useVectorizedInputFileFormat;
+  boolean useVectorDeserialize;
+  boolean useRowDeserialize;
+
+  boolean isSchemaEvolution;
+
   public Vectorizer() {
 
     StringBuilder patternBuilder = new StringBuilder();
@@ -341,6 +352,7 @@ public class Vectorizer implements PhysicalPlanResolver {
     List<String> columnNames;
     List<TypeInfo> typeInfos;
     int partitionColumnCount;
+    boolean useVectorizedInputFileFormat;
 
     String[] scratchTypeNameArray;
 
@@ -362,7 +374,9 @@ public class Vectorizer implements PhysicalPlanResolver {
     public void setScratchTypeNameArray(String[] scratchTypeNameArray) {
       this.scratchTypeNameArray = scratchTypeNameArray;
     }
-
+    public void setUseVectorizedInputFileFormat(boolean useVectorizedInputFileFormat) {
+      this.useVectorizedInputFileFormat = useVectorizedInputFileFormat;
+    }
     public void setNonVectorizedOps(Set<Operator<? extends OperatorDesc>> nonVectorizedOps) {
       this.nonVectorizedOps = nonVectorizedOps;
     }
@@ -383,6 +397,8 @@ public class Vectorizer implements PhysicalPlanResolver {
             partitionColumnCount,
             scratchTypeNameArray);
       baseWork.setVectorizedRowBatchCtx(vectorizedRowBatchCtx);
+
+      baseWork.setUseVectorizedInputFileFormat(useVectorizedInputFileFormat);
     }
   }
 
@@ -443,6 +459,10 @@ public class Vectorizer implements PhysicalPlanResolver {
           + ReduceSinkOperator.getOperatorName()), np);
     }
 
+    /*
+     * Determine if there is only one TableScanOperator.  Currently in Map vectorization, we do not
+     * try to vectorize multiple input trees.
+     */
     private ImmutablePair<String, TableScanOperator> verifyOnlyOneTableScanOperator(MapWork mapWork) {
 
       // Eliminate MR plans with more than one TableScanOperator.
@@ -476,8 +496,6 @@ public class Vectorizer implements PhysicalPlanResolver {
     private void getTableScanOperatorSchemaInfo(TableScanOperator tableScanOperator,
         List<String> logicalColumnNameList, List<TypeInfo> logicalTypeInfoList) {
 
-      TableScanDesc tableScanDesc = tableScanOperator.getConf();
-
       // Add all non-virtual columns to make a vectorization context for
       // the TableScan operator.
       RowSchema rowSchema = tableScanOperator.getSchema();
@@ -494,35 +512,141 @@ public class Vectorizer implements PhysicalPlanResolver {
       }
     }
 
-     private String getColumns(List<String> columnNames, int start, int length,
-        Character separator) {
-      return Joiner.on(separator).join(columnNames.subList(start, start + length));
-    }
-
-    private String getTypes(List<TypeInfo> typeInfos, int start, int length) {
-      return TypeInfoUtils.getTypesString(typeInfos.subList(start, start + length));
-    }
-
-    private boolean verifyAndSetVectorPartDesc(PartitionDesc pd) {
+    private String getHiveOptionsString() {
+      StringBuilder sb = new StringBuilder();
+      sb.append(HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTORIZED_INPUT_FILE_FORMAT.varname);
+      sb.append("=");
+      sb.append(useVectorizedInputFileFormat);
+      sb.append(", ");
+      sb.append(HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTOR_DESERIALIZE.varname);
+      sb.append("=");
+      sb.append(useVectorDeserialize);
+      sb.append(", and ");
+      sb.append(HiveConf.ConfVars.HIVE_VECTORIZATION_USE_ROW_DESERIALIZE.varname);
+      sb.append("=");
+      sb.append(useRowDeserialize);
+      return sb.toString();
+    }
+
+    /*
+     * There are 3 modes of reading for vectorization:
+     *
+     *   1) One for the Vectorized Input File Format which returns VectorizedRowBatch as the row.
+     *
+     *   2) One for using VectorDeserializeRow to deserialize each row into the VectorizedRowBatch.
+     *      Currently, these Input File Formats:
+     *        TEXTFILE
+     *        SEQUENCEFILE
+     *
+     *   3) And one using the regular partition deserializer to get the row object and assigning
+     *      the row object into the VectorizedRowBatch with VectorAssignRow.
+     *      This picks up Input File Format not supported by the other two.
+     */
+    private boolean verifyAndSetVectorPartDesc(PartitionDesc pd, boolean isAcidTable) {
+
+      String inputFileFormatClassName = pd.getInputFileFormatClassName();
 
       // Look for Pass-Thru case where InputFileFormat has VectorizedInputFormatInterface
       // and reads VectorizedRowBatch as a "row".
 
-      if (Utilities.isInputFileFormatVectorized(pd)) {
+      if (isAcidTable || useVectorizedInputFileFormat) {
+
+        if (Utilities.isInputFileFormatVectorized(pd)) {
+
+          if (!useVectorizedInputFileFormat) {
+            LOG.info("ACID tables con only be vectorized for the input file format -- " +
+                "i.e. when Hive Configuration option " +
+                HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTORIZED_INPUT_FILE_FORMAT.varname +
+                "=true");
+            return false;
+          }
+
+          pd.setVectorPartitionDesc(
+              VectorPartitionDesc.createVectorizedInputFileFormat(
+                  inputFileFormatClassName, Utilities.isInputFileFormatSelfDescribing(pd)));
+
+          return true;
+        }
+
+        // Today, ACID tables are only ORC and that format is vectorizable.  Verify this
+        // assumption.
+        Preconditions.checkState(!isAcidTable);
+      }
+
+      if (!(isSchemaEvolution || isAcidTable) &&
+        (useVectorDeserialize || useRowDeserialize)) {
+        LOG.info("Input format: " + inputFileFormatClassName + " cannot be vectorized" +
+            " when both " + HiveConf.ConfVars.HIVE_SCHEMA_EVOLUTION.varname + "=false and " +
+            " ACID table is " + isAcidTable + " and " +
+            " given the Hive Configuration options " + getHiveOptionsString());
+        return false;
+      }
+
+      String deserializerClassName = pd.getDeserializerClassName();
+
+      // Look for InputFileFormat / Serde combinations we can deserialize more efficiently
+      // using VectorDeserializeRow and a deserialize class with the DeserializeRead interface.
+      //
+      // Do the "vectorized" row-by-row deserialization into a VectorizedRowBatch in the
+      // VectorMapOperator.
+
+      if (useVectorDeserialize) {
+
+        // Currently, we support LazySimple deserialization:
+        //
+        //    org.apache.hadoop.mapred.TextInputFormat
+        //    org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+        //
+        // AND
+        //
+        //    org.apache.hadoop.mapred.SequenceFileInputFormat
+        //    org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+        if (inputFileFormatClassName.equals(TextInputFormat.class.getName()) &&
+            deserializerClassName.equals(LazySimpleSerDe.class.getName())) {
+
+          pd.setVectorPartitionDesc(
+              VectorPartitionDesc.createVectorDeserialize(
+                  inputFileFormatClassName, VectorDeserializeType.LAZY_SIMPLE));
+
+          return true;
+        } else if (inputFileFormatClassName.equals(SequenceFileInputFormat.class.getName()) &&
+            deserializerClassName.equals(LazyBinarySerDe.class.getName())) {
 
-        pd.setVectorPartitionDesc(VectorPartitionDesc.createVectorizedInputFileFormat());
+          pd.setVectorPartitionDesc(
+              VectorPartitionDesc.createVectorDeserialize(
+                  inputFileFormatClassName, VectorDeserializeType.LAZY_BINARY));
+
+          return true;
+        }
+      }
+
+      // Otherwise, if enabled, deserialize rows using regular Serde and add the object
+      // inspect-able Object[] row to a VectorizedRowBatch in the VectorMapOperator.
+
+      if (useRowDeserialize) {
+
+        pd.setVectorPartitionDesc(
+            VectorPartitionDesc.createRowDeserialize(
+                inputFileFormatClassName,
+                Utilities.isInputFileFormatSelfDescribing(pd),
+                deserializerClassName));
 
         return true;
+
       }
 
-      LOG.info("Input format: " + pd.getInputFileFormatClassName()
-          + ", doesn't provide vectorized input");
+      LOG.info("Input format: " + inputFileFormatClassName + " cannot be vectorized" +
+          " given the Hive Configuration options " + getHiveOptionsString());
 
       return false;
     }
 
     private boolean validateInputFormatAndSchemaEvolution(MapWork mapWork, String alias,
-        TableScanOperator tableScanOperator, VectorTaskColumnInfo vectorTaskColumnInfo) {
+        TableScanOperator tableScanOperator, VectorTaskColumnInfo vectorTaskColumnInfo)
+            throws SemanticException {
+
+      boolean isAcidTable = tableScanOperator.getConf().isAcidTable();
 
       // These names/types are the data columns plus partition columns.
       final List<String> allColumnNameList = new ArrayList<String>();
@@ -531,23 +655,16 @@ public class Vectorizer implements PhysicalPlanResolver {
       getTableScanOperatorSchemaInfo(tableScanOperator, allColumnNameList, allTypeInfoList);
       final int allColumnCount = allColumnNameList.size();
 
-      // Validate input format and schema evolution capability.
-
-      // For the table, enter a null value in the multi-key map indicating no conversion necessary
-      // if the schema matches the table.
-
-      HashMap<ImmutablePair, boolean[]> conversionMap = new HashMap<ImmutablePair, boolean[]>();
-
+      /*
+       * Validate input formats of all the partitions can be vectorized.
+       */
       boolean isFirst = true;
       int dataColumnCount = 0;
       int partitionColumnCount = 0;
 
-      List<String> dataColumnList = null;
-      String dataColumnsString = "";
-      List<TypeInfo> dataTypeInfoList = null;
+      List<String> tableDataColumnList = null;
+      List<TypeInfo> tableDataTypeInfoList = null;
 
-      // Validate the input format
-      VectorPartitionConversion partitionConversion = new VectorPartitionConversion();
       LinkedHashMap<String, ArrayList<String>> pathToAliases = mapWork.getPathToAliases();
       LinkedHashMap<String, PartitionDesc> pathToPartitionInfo = mapWork.getPathToPartitionInfo();
       for (Entry<String, ArrayList<String>> entry: pathToAliases.entrySet()) {
@@ -563,31 +680,18 @@ public class Vectorizer implements PhysicalPlanResolver {
           // We seen this already.
           continue;
         }
-        if (!verifyAndSetVectorPartDesc(partDesc)) {
+        if (!verifyAndSetVectorPartDesc(partDesc, isAcidTable)) {
           return false;
         }
         VectorPartitionDesc vectorPartDesc = partDesc.getVectorPartitionDesc();
-        LOG.info("Vectorizer path: " + path + ", read type " +
-            vectorPartDesc.getVectorMapOperatorReadType().name() + ", aliases " + aliases);
-
-        Properties partProps = partDesc.getProperties();
-
-        String nextDataColumnsString =
-            partProps.getProperty(hive_metastoreConstants.META_TABLE_COLUMNS);
-        String[] nextDataColumns = nextDataColumnsString.split(",");
-
-        String nextDataTypesString =
-            partProps.getProperty(hive_metastoreConstants.META_TABLE_COLUMN_TYPES);
-
-        // We convert to an array of TypeInfo using a library routine since it parses the information
-        // and can handle use of different separators, etc.  We cannot use the raw type string
-        // for comparison in the map because of the different separators used.
-        List<TypeInfo> nextDataTypeInfoList =
-            TypeInfoUtils.getTypeInfosFromTypeString(nextDataTypesString);
+        if (LOG.isInfoEnabled()) {
+          LOG.info("Vectorizer path: " + path + ", " + vectorPartDesc.toString() +
+              ", aliases " + aliases);
+        }
 
         if (isFirst) {
 
-          // We establish with the first one whether the table is partitioned or not.
+          // Determine the data and partition columns using the first partition descriptor.
 
           LinkedHashMap<String, String> partSpec = partDesc.getPartSpec();
           if (partSpec != null && partSpec.size() > 0) {
@@ -598,85 +702,83 @@ public class Vectorizer implements PhysicalPlanResolver {
             dataColumnCount = allColumnCount;
           }
 
-          dataColumnList = allColumnNameList.subList(0, dataColumnCount);
-          dataColumnsString = getColumns(allColumnNameList, 0, dataColumnCount, ',');
-          dataTypeInfoList = allTypeInfoList.subList(0, dataColumnCount);
-
-          // Add the table (non-partitioned) columns and types into the map as not needing
-          // conversion (i.e. null).
-          conversionMap.put(
-              new ImmutablePair(dataColumnsString, dataTypeInfoList), null);
+          tableDataColumnList = allColumnNameList.subList(0, dataColumnCount);
+          tableDataTypeInfoList = allTypeInfoList.subList(0, dataColumnCount);
 
           isFirst = false;
         }
 
-        ImmutablePair columnNamesAndTypesCombination =
-            new ImmutablePair(nextDataColumnsString, nextDataTypeInfoList);
-
-        boolean[] conversionFlags;
-        if (conversionMap.containsKey(columnNamesAndTypesCombination)) {
-
-          conversionFlags = conversionMap.get(columnNamesAndTypesCombination);
-
-        } else {
-
-          List<String> nextDataColumnList = Arrays.asList(nextDataColumns);
-
-          // Validate the column names that are present are the same.  Missing columns will be
-          // implicitly defaulted to null.
+        // We need to get the partition's column names from the partition serde.
+        // (e.g. Avro provides the table schema and ignores the partition schema..).
+        //
+        Deserializer deserializer;
+        StructObjectInspector partObjectInspector;
+        try {
+          deserializer = partDesc.getDeserializer(hiveConf);
+          partObjectInspector = (StructObjectInspector) deserializer.getObjectInspector();
+        } catch (Exception e) {
+          throw new SemanticException(e);
+        }
+        String nextDataColumnsString = ObjectInspectorUtils.getFieldNames(partObjectInspector);
+        String[] nextDataColumns = nextDataColumnsString.split(",");
+        List<String> nextDataColumnList = Arrays.asList(nextDataColumns);
+
+        /*
+         * Validate the column names that are present are the same.  Missing columns will be
+         * implicitly defaulted to null.
+         */
+        if (nextDataColumnList.size() > tableDataColumnList.size()) {
+          LOG.info(
+              String.format(
+                  "Could not vectorize partition %s " +
+                  "(deserializer " + deserializer.getClass().getName() + ")" +
+                  "The partition column names %d is greater than the number of table columns %d",
+                  path, nextDataColumnList.size(), tableDataColumnList.size()));
+          return false;
+        }
+        if (!(deserializer instanceof NullStructSerDe)) {
 
-          if (nextDataColumnList.size() > dataColumnList.size()) {
-            LOG.info(
-                String.format("Could not vectorize partition %s.  The partition column names %d is greater than the number of table columns %d",
-                    path, nextDataColumnList.size(), dataColumnList.size()));
-            return false;
-          }
+          // (Don't insist NullStructSerDe produce correct column names).
           for (int i = 0; i < nextDataColumnList.size(); i++) {
             String nextColumnName = nextDataColumnList.get(i);
-            String tableColumnName = dataColumnList.get(i);
+            String tableColumnName = tableDataColumnList.get(i);
             if (!nextColumnName.equals(tableColumnName)) {
               LOG.info(
-                  String.format("Could not vectorize partition %s.  The partition column name %s is does not match table column name %s",
+                  String.format(
+                      "Could not vectorize partition %s " +
+                      "(deserializer " + deserializer.getClass().getName() + ")" +
+                      "The partition column name %s is does not match table column name %s",
                       path, nextColumnName, tableColumnName));
               return false;
             }
           }
+        }
 
-          // The table column types might have been changed with ALTER.  There are restrictions
-          // here for vectorization.
-
-          // Some readers / deserializers take responsibility for conversion themselves.
-
-          // If we need to check for conversion, the conversion object may come back null
-          // indicating from a vectorization point of view the conversion is implicit.  That is,
-          // all implicit integer upgrades.
+        List<TypeInfo> nextDataTypeInfoList;
+        if (vectorPartDesc.getIsInputFileFormatSelfDescribing()) {
 
-          if (vectorPartDesc.getNeedsDataTypeConversionCheck() &&
-             !nextDataTypeInfoList.equals(dataTypeInfoList)) {
+          /*
+           * Self-Describing Input Format will convert its data to the table schema.
+           */
+          nextDataTypeInfoList = tableDataTypeInfoList;
 
-             // The results will be in 2 members: validConversion and conversionFlags
-            partitionConversion.validateConversion(nextDataTypeInfoList, dataTypeInfoList);
-             if (!partitionConversion.getValidConversion()) {
-               return false;
-             }
-             conversionFlags = partitionConversion.getResultConversionFlags();
-           } else {
-            conversionFlags = null;
-          }
-
-          // We enter this in our map so we don't have to check again for subsequent partitions.
+        } else {
+          String nextDataTypesString = ObjectInspectorUtils.getFieldTypes(partObjectInspector);
 
-          conversionMap.put(columnNamesAndTypesCombination, conversionFlags);
+          // We convert to an array of TypeInfo using a library routine since it parses the information
+          // and can handle use of different separators, etc.  We cannot use the raw type string
+          // for comparison in the map because of the different separators used.
+          nextDataTypeInfoList =
+              TypeInfoUtils.getTypeInfosFromTypeString(nextDataTypesString);
         }
 
-        vectorPartDesc.setConversionFlags(conversionFlags);
-
-        vectorPartDesc.setTypeInfos(nextDataTypeInfoList);
+        vectorPartDesc.setDataTypeInfos(nextDataTypeInfoList);
       }
 
       vectorTaskColumnInfo.setColumnNames(allColumnNameList);
       vectorTaskColumnInfo.setTypeInfos(allTypeInfoList);
       vectorTaskColumnInfo.setPartitionColumnCount(partitionColumnCount);
+      vectorTaskColumnInfo.setUseVectorizedInputFileFormat(useVectorizedInputFileFormat);
 
       return true;
     }
@@ -1203,7 +1305,23 @@ public class Vectorizer implements PhysicalPlanResolver {
       LOG.info("Vectorization is disabled");
       return physicalContext;
     }
+
     isSpark = (HiveConf.getVar(hiveConf, HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("spark"));
+
+    useVectorizedInputFileFormat =
+        HiveConf.getBoolVar(hiveConf,
+            HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTORIZED_INPUT_FILE_FORMAT);
+    useVectorDeserialize =
+        HiveConf.getBoolVar(hiveConf,
+            HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTOR_DESERIALIZE);
+    useRowDeserialize =
+        HiveConf.getBoolVar(hiveConf,
+            HiveConf.ConfVars.HIVE_VECTORIZATION_USE_ROW_DESERIALIZE);
+
+    isSchemaEvolution =
+        HiveConf.getBoolVar(hiveConf,
+            HiveConf.ConfVars.HIVE_SCHEMA_EVOLUTION);
+
     // create dispatcher and graph walker
     Dispatcher disp = new VectorizationDispatcher(physicalContext);
     TaskGraphWalker ogw = new TaskGraphWalker(disp);

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java
index 429a058..20f787b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/BaseWork.java
@@ -28,6 +28,7 @@ import java.util.Stack;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.exec.HashTableDummyOperator;
 import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatchCtx;
@@ -68,6 +69,8 @@ public abstract class BaseWork extends AbstractOperatorDesc {
 
   protected VectorizedRowBatchCtx vectorizedRowBatchCtx;
 
+  protected boolean useVectorizedInputFileFormat;
+
   protected boolean llapMode = false;
   protected boolean uberMode = false;
 
@@ -158,6 +161,9 @@ public abstract class BaseWork extends AbstractOperatorDesc {
 
   // -----------------------------------------------------------------------------------------------
 
+  /*
+   * The vectorization context for creating the VectorizedRowBatch for the node.
+   */
   public VectorizedRowBatchCtx getVectorizedRowBatchCtx() {
     return vectorizedRowBatchCtx;
   }
@@ -166,6 +172,23 @@ public abstract class BaseWork extends AbstractOperatorDesc {
     this.vectorizedRowBatchCtx = vectorizedRowBatchCtx;
   }
 
+  /*
+   * Whether the HiveConf.ConfVars.HIVE_VECTORIZATION_USE_VECTORIZED_INPUT_FILE_FORMAT variable
+   * (hive.vectorized.use.vectorized.input.format) was true when the Vectorizer class evaluated
+   * vectorizing this node.
+   *
+   * When Vectorized Input File Format looks at this flag, it can determine whether it should
+   * operate vectorized or not.  In some modes, the node can be vectorized but use row
+   * serialization.
+   */
+  public void setUseVectorizedInputFileFormat(boolean useVectorizedInputFileFormat) {
+    this.useVectorizedInputFileFormat = useVectorizedInputFileFormat;
+  }
+
+  public boolean getUseVectorizedInputFileFormat() {
+    return useVectorizedInputFileFormat;
+  }
+
   // -----------------------------------------------------------------------------------------------
 
   /**

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java
index 0851d9e..f034812 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/MapWork.java
@@ -38,6 +38,7 @@ import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
 import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.OperatorUtils;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
 import org.apache.hadoop.hive.ql.io.AcidUtils;
 import org.apache.hadoop.hive.ql.io.HiveInputFormat;
 import org.apache.hadoop.hive.ql.optimizer.physical.BucketingSortingCtx.BucketCol;
@@ -130,6 +131,8 @@ public class MapWork extends BaseWork {
 
   private boolean doSplitsGrouping = true;
 
+  private VectorizedRowBatch vectorizedRowBatch;
+
   // bitsets can't be correctly serialized by Kryo's default serializer
   // BitSet::wordsInUse is transient, so force dumping into a lower form
   private byte[] includedBuckets;
@@ -635,4 +638,12 @@ public class MapWork extends BaseWork {
     // see comment next to the field
     this.includedBuckets = includedBuckets.toByteArray();
   }
+
+  public void setVectorizedRowBatch(VectorizedRowBatch vectorizedRowBatch) {
+    this.vectorizedRowBatch = vectorizedRowBatch;
+  }
+
+  public VectorizedRowBatch getVectorizedRowBatch() {
+    return vectorizedRowBatch;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionConversion.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionConversion.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionConversion.java
index 8fe298d..f46581a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionConversion.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionConversion.java
@@ -19,9 +19,6 @@
 package org.apache.hadoop.hive.ql.plan;
 
 import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang.ArrayUtils;
 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.PrimitiveTypeInfo;
@@ -33,134 +30,75 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
  */
 public class VectorPartitionConversion  {
 
-  private static long serialVersionUID = 1L;
-
-  private boolean validConversion;
-  private boolean[] resultConversionFlags;
-
-  private TypeInfo invalidFromTypeInfo;
-  private TypeInfo invalidToTypeInfo;
-
-  public boolean getValidConversion() {
-    return validConversion;
-  }
-
-  public boolean[] getResultConversionFlags() {
-    return resultConversionFlags;
-  }
-
-  public TypeInfo getInvalidFromTypeInfo() {
-    return invalidFromTypeInfo;
-  }
-
-  public TypeInfo getInvalidToTypeInfo() {
-    return invalidToTypeInfo;
-  }
-
   // Currently, we only support these no-precision-loss or promotion data type conversions:
-  //  //
-  //  Short -> Int                  IMPLICIT WITH VECTORIZATION
-  //  Short -> BigInt               IMPLICIT WITH VECTORIZATION
-  //  Int --> BigInt                IMPLICIT WITH VECTORIZATION
   //
-  // CONSIDER ADDING:
-  //  Float -> Double               IMPLICIT WITH VECTORIZATION
-  //  (Char | VarChar) -> String    IMPLICIT WITH VECTORIZATION
+  //  TinyInt --> SmallInt
+  //  TinyInt --> Int
+  //  TinyInt --> BigInt
+  //
+  //  SmallInt -> Int
+  //  SmallInt -> BigInt
+  //
+  //  Int --> BigInt
   //
-  private static HashMap<PrimitiveCategory, PrimitiveCategory[]> validFromPrimitiveMap =
+  //  Float -> Double
+  //
+  //  Since we stare Char without padding, it can become a String implicitly.
+  //  (Char | VarChar) -> String
+  //
+  private static HashMap<PrimitiveCategory, PrimitiveCategory[]> implicitPrimitiveMap =
       new HashMap<PrimitiveCategory, PrimitiveCategory[]>();
   static {
-    validFromPrimitiveMap.put(
+    implicitPrimitiveMap.put(
+        PrimitiveCategory.BOOLEAN,
+        new PrimitiveCategory[] {
+            PrimitiveCategory.BYTE, PrimitiveCategory.SHORT, PrimitiveCategory.INT, PrimitiveCategory.LONG });
+    implicitPrimitiveMap.put(
+        PrimitiveCategory.BYTE,
+        new PrimitiveCategory[] {
+            PrimitiveCategory.SHORT, PrimitiveCategory.INT, PrimitiveCategory.LONG });
+    implicitPrimitiveMap.put(
         PrimitiveCategory.SHORT,
-        new PrimitiveCategory[] { PrimitiveCategory.INT, PrimitiveCategory.LONG });
-    validFromPrimitiveMap.put(
+        new PrimitiveCategory[] {
+            PrimitiveCategory.INT, PrimitiveCategory.LONG });
+    implicitPrimitiveMap.put(
         PrimitiveCategory.INT,
-        new PrimitiveCategory[] { PrimitiveCategory.LONG });
+        new PrimitiveCategory[] {
+            PrimitiveCategory.LONG });
+    implicitPrimitiveMap.put(
+        PrimitiveCategory.FLOAT,
+        new PrimitiveCategory[] {
+            PrimitiveCategory.DOUBLE });
+    implicitPrimitiveMap.put(
+        PrimitiveCategory.CHAR,
+        new PrimitiveCategory[] {
+            PrimitiveCategory.STRING });
+    implicitPrimitiveMap.put(
+        PrimitiveCategory.VARCHAR,
+        new PrimitiveCategory[] {
+            PrimitiveCategory.STRING });
   }
 
-  private boolean validateOne(TypeInfo fromTypeInfo, TypeInfo toTypeInfo) {
-
-    if (fromTypeInfo.equals(toTypeInfo)) {
-      return false;
-    }
+  public static boolean isImplicitVectorColumnConversion(TypeInfo fromTypeInfo,
+      TypeInfo toTypeInfo) {
 
     if (fromTypeInfo.getCategory() == Category.PRIMITIVE &&
         toTypeInfo.getCategory() == Category.PRIMITIVE) {
 
-      PrimitiveCategory fromPrimitiveCategory = ((PrimitiveTypeInfo) fromTypeInfo).getPrimitiveCategory();
-      PrimitiveCategory toPrimitiveCategory = ((PrimitiveTypeInfo) toTypeInfo).getPrimitiveCategory();
-
-      PrimitiveCategory[] toPrimitiveCategories =
-          validFromPrimitiveMap.get(fromPrimitiveCategory);
-      if (toPrimitiveCategories == null ||
-          !ArrayUtils.contains(toPrimitiveCategories, toPrimitiveCategory)) {
-        invalidFromTypeInfo = fromTypeInfo;
-        invalidToTypeInfo = toTypeInfo;
-
-        // Tell caller a bad one was found.
-        validConversion = false;
-        return false;
-      }
-    } else {
-      // Ignore checking complex types.  Assume they will not be included in the query.
-    }
-
-    return true;
-  }
-
-  public void validateConversion(List<TypeInfo> fromTypeInfoList,
-      List<TypeInfo> toTypeInfoList) {
-
-    final int columnCount = fromTypeInfoList.size();
-    resultConversionFlags = new boolean[columnCount];
-
-    // The method validateOne will turn this off when invalid conversion is found.
-    validConversion = true;
-
-    boolean atLeastOneConversion = false;
-    for (int i = 0; i < columnCount; i++) {
-      TypeInfo fromTypeInfo = fromTypeInfoList.get(i);
-      TypeInfo toTypeInfo = toTypeInfoList.get(i);
-
-      resultConversionFlags[i] = validateOne(fromTypeInfo, toTypeInfo);
-      if (!validConversion) {
-        return;
-      }
-    }
-
-    if (atLeastOneConversion) {
-      // Leave resultConversionFlags set.
-    } else {
-      resultConversionFlags = null;
-    }
-  }
-
-  public void validateConversion(TypeInfo[] fromTypeInfos, TypeInfo[] toTypeInfos) {
-
-    final int columnCount = fromTypeInfos.length;
-    resultConversionFlags = new boolean[columnCount];
-
-    // The method validateOne will turn this off when invalid conversion is found.
-    validConversion = true;
-
-    boolean atLeastOneConversion = false;
-    for (int i = 0; i < columnCount; i++) {
-      TypeInfo fromTypeInfo = fromTypeInfos[i];
-      TypeInfo toTypeInfo = toTypeInfos[i];
-
-      resultConversionFlags[i] = validateOne(fromTypeInfo, toTypeInfo);
-      if (!validConversion) {
-        return;
-      }
-      if (resultConversionFlags[i]) {
-        atLeastOneConversion = true;
+      PrimitiveCategory fromPrimitiveCategory =
+          ((PrimitiveTypeInfo) fromTypeInfo).getPrimitiveCategory();
+      PrimitiveCategory toPrimitiveCategory =
+          ((PrimitiveTypeInfo) toTypeInfo).getPrimitiveCategory();
+      PrimitiveCategory[] toPrimitiveCategories = implicitPrimitiveMap.get(fromPrimitiveCategory);
+      if (toPrimitiveCategories != null) {
+        for (PrimitiveCategory candidatePrimitiveCategory : toPrimitiveCategories) {
+          if (candidatePrimitiveCategory == toPrimitiveCategory) {
+            return true;
+          }
+        }
       }
+      return false;
     }
-
-    if (atLeastOneConversion) {
-      // Leave resultConversionFlags set.
-    } else {
-      resultConversionFlags = null;
-    }
+    return false;
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionDesc.java
index 45151f2..2b61ec0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorPartitionDesc.java
@@ -39,44 +39,120 @@ public class VectorPartitionDesc  {
   //    No data type conversion check?  Assume ALTER TABLE prevented conversions that
   //    VectorizedInputFileFormat cannot handle...
   //
+  // VECTOR_DESERIALIZE:
+  //    LAZY_SIMPLE:
+  //        Capable of converting on its own.
+  //    LAZY_BINARY
+  //        Partition schema assumed to match file contents.
+  //        Conversion necessary from partition field values to vector columns.
+  // ROW_DESERIALIZE
+  //    Partition schema assumed to match file contents.
+  //    Conversion necessary from partition field values to vector columns.
+  //
 
   public static enum VectorMapOperatorReadType {
     NONE,
-    VECTORIZED_INPUT_FILE_FORMAT
+    VECTORIZED_INPUT_FILE_FORMAT,
+    VECTOR_DESERIALIZE,
+    ROW_DESERIALIZE
   }
 
+  public static enum VectorDeserializeType {
+    NONE,
+    LAZY_SIMPLE,
+    LAZY_BINARY
+  }
 
   private final VectorMapOperatorReadType vectorMapOperatorReadType;
+  private final VectorDeserializeType vectorDeserializeType;
 
-  private final boolean needsDataTypeConversionCheck;
+  private final String rowDeserializerClassName;
+  private final String inputFileFormatClassName;
 
-  private boolean[] conversionFlags;
+  boolean isInputFileFormatSelfDescribing;
 
-  private TypeInfo[] typeInfos;
+  private TypeInfo[] dataTypeInfos;
 
-  private VectorPartitionDesc(VectorMapOperatorReadType vectorMapOperatorReadType,
-      boolean needsDataTypeConversionCheck) {
+  private VectorPartitionDesc(String inputFileFormatClassName,
+      boolean isInputFileFormatSelfDescribing, VectorMapOperatorReadType vectorMapOperatorReadType) {
     this.vectorMapOperatorReadType = vectorMapOperatorReadType;
-    this.needsDataTypeConversionCheck = needsDataTypeConversionCheck;
+    this.vectorDeserializeType = VectorDeserializeType.NONE;
+    this.inputFileFormatClassName = inputFileFormatClassName;
+    rowDeserializerClassName = null;
+    this.isInputFileFormatSelfDescribing = isInputFileFormatSelfDescribing;
+    dataTypeInfos = null;
+  }
 
-    conversionFlags = null;
-    typeInfos = null;
+  /**
+   * Create a VECTOR_DESERIALIZE flavor object.
+   * @param vectorMapOperatorReadType
+   * @param vectorDeserializeType
+   * @param needsDataTypeConversionCheck
+   */
+  private VectorPartitionDesc(String inputFileFormatClassName,
+      VectorDeserializeType vectorDeserializeType) {
+    this.vectorMapOperatorReadType = VectorMapOperatorReadType.VECTOR_DESERIALIZE;
+    this.vectorDeserializeType = vectorDeserializeType;
+    this.inputFileFormatClassName = inputFileFormatClassName;
+    rowDeserializerClassName = null;
+    isInputFileFormatSelfDescribing = false;
+    dataTypeInfos = null;
   }
 
-  public static VectorPartitionDesc createVectorizedInputFileFormat() {
-    return new VectorPartitionDesc(VectorMapOperatorReadType.VECTORIZED_INPUT_FILE_FORMAT, true);
+  /**
+   * Create a ROW_DESERIALIZE flavor object.
+   * @param rowDeserializerClassName
+   * @param inputFileFormatClassName
+   */
+  private VectorPartitionDesc(String inputFileFormatClassName,
+      boolean isInputFileFormatSelfDescribing, String rowDeserializerClassName) {
+    this.vectorMapOperatorReadType = VectorMapOperatorReadType.ROW_DESERIALIZE;
+    this.vectorDeserializeType = VectorDeserializeType.NONE;
+    this.inputFileFormatClassName = inputFileFormatClassName;
+    this.rowDeserializerClassName = rowDeserializerClassName;
+    this.isInputFileFormatSelfDescribing = isInputFileFormatSelfDescribing;
+    dataTypeInfos = null;
   }
 
+  public static VectorPartitionDesc createVectorizedInputFileFormat(String inputFileFormatClassName,
+      boolean isInputFileFormatSelfDescribing) {
+    return new VectorPartitionDesc(
+        inputFileFormatClassName,
+        isInputFileFormatSelfDescribing,
+        VectorMapOperatorReadType.VECTORIZED_INPUT_FILE_FORMAT);
+  }
+
+  public static VectorPartitionDesc createVectorDeserialize(String inputFileFormatClassName,
+      VectorDeserializeType vectorDeserializeType) {
+    return new VectorPartitionDesc(inputFileFormatClassName, vectorDeserializeType);
+  }
+
+  public static VectorPartitionDesc createRowDeserialize(String inputFileFormatClassName,
+      boolean isInputFileFormatSelfDescribing, String rowDeserializerClassName) {
+    return new VectorPartitionDesc(rowDeserializerClassName, isInputFileFormatSelfDescribing,
+        inputFileFormatClassName);
+  }
 
   @Override
   public VectorPartitionDesc clone() {
-    VectorPartitionDesc result =
-        new VectorPartitionDesc(vectorMapOperatorReadType,
-            needsDataTypeConversionCheck);
-    result.conversionFlags =
-        (conversionFlags == null ? null :
-          Arrays.copyOf(conversionFlags, conversionFlags.length));
-    result.typeInfos = Arrays.copyOf(typeInfos, typeInfos.length);
+    VectorPartitionDesc result;
+    switch (vectorMapOperatorReadType) {
+    case VECTORIZED_INPUT_FILE_FORMAT:
+      result = new VectorPartitionDesc(inputFileFormatClassName, isInputFileFormatSelfDescribing,
+          vectorMapOperatorReadType);
+      break;
+    case VECTOR_DESERIALIZE:
+      result = new VectorPartitionDesc(inputFileFormatClassName, vectorDeserializeType);
+      break;
+    case ROW_DESERIALIZE:
+      result = new VectorPartitionDesc(inputFileFormatClassName, isInputFileFormatSelfDescribing,
+          rowDeserializerClassName);
+      break;
+    default:
+      throw new RuntimeException("Unexpected vector map operator read type " + vectorMapOperatorReadType.name());
+    }
+    result.dataTypeInfos = Arrays.copyOf(dataTypeInfos, dataTypeInfos.length);
+
     return result;
   }
 
@@ -84,27 +160,55 @@ public class VectorPartitionDesc  {
     return vectorMapOperatorReadType;
   }
 
-  public boolean getNeedsDataTypeConversionCheck() {
-    return needsDataTypeConversionCheck;
+  public String getInputFileFormatClassName() {
+    return inputFileFormatClassName;
+  }
+
+  public VectorDeserializeType getVectorDeserializeType() {
+    return vectorDeserializeType;
   }
 
-  public void setConversionFlags(boolean[] conversionFlags) {
-    this.conversionFlags = conversionFlags;
+  public String getRowDeserializerClassName() {
+    return rowDeserializerClassName;
   }
 
-  public boolean[] getConversionFlags() {
-    return conversionFlags;
+  public boolean getIsInputFileFormatSelfDescribing() {
+    return isInputFileFormatSelfDescribing;
   }
 
-  public TypeInfo[] getTypeInfos() {
-    return typeInfos;
+  public TypeInfo[] getDataTypeInfos() {
+    return dataTypeInfos;
   }
 
-  public void setTypeInfos(List<TypeInfo> typeInfoList) {
-    typeInfos = typeInfoList.toArray(new TypeInfo[0]);
+  public void setDataTypeInfos(List<TypeInfo> dataTypeInfoList) {
+    dataTypeInfos = dataTypeInfoList.toArray(new TypeInfo[0]);
   }
 
-  public int getNonPartColumnCount() {
-    return typeInfos.length;
+  public int getDataColumnCount() {
+    return dataTypeInfos.length;
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("vector map operator read type ");
+    sb.append(vectorMapOperatorReadType.name());
+    sb.append(", input file format class name ");
+    sb.append(inputFileFormatClassName);
+    switch (vectorMapOperatorReadType) {
+    case VECTORIZED_INPUT_FILE_FORMAT:
+      break;
+    case VECTOR_DESERIALIZE:
+      sb.append(", deserialize type ");
+      sb.append(vectorDeserializeType.name());
+      break;
+    case ROW_DESERIALIZE:
+      sb.append(", deserializer class name ");
+      sb.append(rowDeserializerClassName);
+      break;
+    default:
+      throw new RuntimeException("Unexpected vector map operator read type " + vectorMapOperatorReadType.name());
+    }
+    return sb.toString();
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorRowObject.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorRowObject.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorRowObject.java
index a5946d1..959a2af 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorRowObject.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorRowObject.java
@@ -34,13 +34,13 @@ import junit.framework.TestCase;
  */
 public class TestVectorRowObject extends TestCase {
 
-  void examineBatch(VectorizedRowBatch batch, VectorExtractRowSameBatch vectorExtractRow,
+  void examineBatch(VectorizedRowBatch batch, VectorExtractRow vectorExtractRow,
               Object[][] randomRows, int firstRandomRowIndex ) {
 
     int rowSize = vectorExtractRow.getCount();
     Object[] row = new Object[rowSize];
     for (int i = 0; i < batch.size; i++) {
-      vectorExtractRow.extractRow(i, row);
+      vectorExtractRow.extractRow(batch, i, row);
       Object[] expectedRow = randomRows[firstRandomRowIndex + i];
       for (int c = 0; c < rowSize; c++) {
         if (!row[c].equals(expectedRow[c])) {
@@ -67,20 +67,18 @@ public class TestVectorRowObject extends TestCase {
       cv.noNulls = false;
     }
 
-    VectorAssignRowSameBatch vectorAssignRow = new VectorAssignRowSameBatch();
+    VectorAssignRow vectorAssignRow = new VectorAssignRow();
     vectorAssignRow.init(source.typeNames());
-    vectorAssignRow.setOneBatch(batch);
-    
-    VectorExtractRowSameBatch vectorExtractRow = new VectorExtractRowSameBatch();
+
+    VectorExtractRow vectorExtractRow = new VectorExtractRow();
     vectorExtractRow.init(source.typeNames());
-    vectorExtractRow.setOneBatch(batch);
 
     Object[][] randomRows = source.randomRows(100000);
     int firstRandomRowIndex = 0;
     for (int i = 0; i < randomRows.length; i++) {
       Object[] row = randomRows[i];
 
-      vectorAssignRow.assignRow(batch.size, row);
+      vectorAssignRow.assignRow(batch, batch.size, row);
       batch.size++;
       if (batch.size == batch.DEFAULT_SIZE) {
         examineBatch(batch, vectorExtractRow, randomRows, firstRandomRowIndex);

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
index 7c0c8d1..e37d2bf 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
@@ -59,6 +59,7 @@ import org.apache.hadoop.hive.serde2.lazybinary.fast.LazyBinarySerializeWrite;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
@@ -100,7 +101,7 @@ public class TestVectorSerDeRow extends TestCase {
       switch (primitiveCategory) {
       case BOOLEAN:
         {
-          Boolean value = deserializeRead.readBoolean();
+          Boolean value = deserializeRead.currentBoolean;
           BooleanWritable expectedWritable = (BooleanWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Boolean field mismatch (expected " + expected + " found " + value + ")");
@@ -109,7 +110,7 @@ public class TestVectorSerDeRow extends TestCase {
         break;
       case BYTE:
         {
-          Byte value = deserializeRead.readByte();
+          Byte value = deserializeRead.currentByte;
           ByteWritable expectedWritable = (ByteWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Byte field mismatch (expected " + (int) expected + " found " + (int) value + ")");
@@ -118,7 +119,7 @@ public class TestVectorSerDeRow extends TestCase {
         break;
       case SHORT:
         {
-          Short value = deserializeRead.readShort();
+          Short value = deserializeRead.currentShort;
           ShortWritable expectedWritable = (ShortWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Short field mismatch (expected " + expected + " found " + value + ")");
@@ -127,7 +128,7 @@ public class TestVectorSerDeRow extends TestCase {
         break;
       case INT:
         {
-          Integer value = deserializeRead.readInt();
+          Integer value = deserializeRead.currentInt;
           IntWritable expectedWritable = (IntWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Int field mismatch (expected " + expected + " found " + value + ")");
@@ -136,7 +137,7 @@ public class TestVectorSerDeRow extends TestCase {
         break;
       case LONG:
         {
-          Long value = deserializeRead.readLong();
+          Long value = deserializeRead.currentLong;
           LongWritable expectedWritable = (LongWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Long field mismatch (expected " + expected + " found " + value + ")");
@@ -145,18 +146,16 @@ public class TestVectorSerDeRow extends TestCase {
         break;
       case DATE:
         {
-          DeserializeRead.ReadDateResults readDateResults = deserializeRead.createReadDateResults();
-          deserializeRead.readDate(readDateResults);
-          Date value = readDateResults.getDate();
+          DateWritable value = deserializeRead.currentDateWritable;
           DateWritable expectedWritable = (DateWritable) expected;
-          if (!value.equals(expectedWritable.get())) {
+          if (!value.equals(expectedWritable)) {
             TestCase.fail("Date field mismatch (expected " + expected.toString() + " found " + value.toString() + ")");
           }
         }
         break;
       case FLOAT:
         {
-          Float value = deserializeRead.readFloat();
+          Float value = deserializeRead.currentFloat;
           FloatWritable expectedWritable = (FloatWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Float field mismatch (expected " + expected + " found " + value + ")");
@@ -165,7 +164,7 @@ public class TestVectorSerDeRow extends TestCase {
         break;
       case DOUBLE:
         {
-          Double value = deserializeRead.readDouble();
+          Double value = deserializeRead.currentDouble;
           DoubleWritable expectedWritable = (DoubleWritable) expected;
           if (!value.equals(expectedWritable.get())) {
             TestCase.fail("Double field mismatch (expected " + expected + " found " + value + ")");
@@ -173,57 +172,69 @@ public class TestVectorSerDeRow extends TestCase {
         }
         break;
       case STRING:
-        {
-          DeserializeRead.ReadStringResults readStringResults = deserializeRead.createReadStringResults();
-          deserializeRead.readString(readStringResults);
-
-          char[] charsBuffer = new char[readStringResults.bytes.length];
-          for (int c = 0; c < charsBuffer.length; c++) {
-            charsBuffer[c] = (char) (readStringResults.bytes[c] & 0xFF);
-          }
-
-          byte[] stringBytes = Arrays.copyOfRange(readStringResults.bytes, readStringResults.start, readStringResults.start + readStringResults.length);
-
-          char[] charsRange = new char[stringBytes.length];
-          for (int c = 0; c < charsRange.length; c++) {
-            charsRange[c] = (char) (stringBytes[c] & 0xFF);
-          }
-
-          Text text = new Text(stringBytes);
-          String value = text.toString();
-          Text expectedWritable = (Text) expected;
-          if (!value.equals(expectedWritable.toString())) {
-            TestCase.fail("String field mismatch (expected '" + expectedWritable.toString() + "' found '" + value + "')");
-          }
-        }
-        break;
       case CHAR:
-        {
-          DeserializeRead.ReadHiveCharResults readHiveCharResults = deserializeRead.createReadHiveCharResults();
-          deserializeRead.readHiveChar(readHiveCharResults);
-          HiveChar hiveChar = readHiveCharResults.getHiveChar();
-          HiveCharWritable expectedWritable = (HiveCharWritable) expected;
-          if (!hiveChar.equals(expectedWritable.getHiveChar())) {
-            TestCase.fail("Char field mismatch (expected '" + expectedWritable.getHiveChar() + "' found '" + hiveChar + "')");
-          }
-        }
-        break;
       case VARCHAR:
+      case BINARY:
         {
-          DeserializeRead.ReadHiveVarcharResults readHiveVarcharResults = deserializeRead.createReadHiveVarcharResults();
-          deserializeRead.readHiveVarchar(readHiveVarcharResults);
-          HiveVarchar hiveVarchar = readHiveVarcharResults.getHiveVarchar();
-          HiveVarcharWritable expectedWritable = (HiveVarcharWritable) expected;
-          if (!hiveVarchar.equals(expectedWritable.getHiveVarchar())) {
-            TestCase.fail("Varchar field mismatch (expected '" + expectedWritable.getHiveVarchar() + "' found '" + hiveVarchar + "')");
+          byte[] stringBytes =
+              Arrays.copyOfRange(
+                  deserializeRead.currentBytes,
+                  deserializeRead.currentBytesStart,
+                  deserializeRead.currentBytesStart + deserializeRead.currentBytesLength);
+
+          Text text = new Text(stringBytes);
+          String string = text.toString();
+
+          switch (primitiveCategory) {
+          case STRING:
+            {
+              Text expectedWritable = (Text) expected;
+              if (!string.equals(expectedWritable.toString())) {
+                TestCase.fail("String field mismatch (expected '" + expectedWritable.toString() + "' found '" + string + "')");
+              }
+            }
+            break;
+          case CHAR:
+            {
+              HiveChar hiveChar = new HiveChar(string, ((CharTypeInfo) primitiveTypeInfo).getLength());
+
+              HiveCharWritable expectedWritable = (HiveCharWritable) expected;
+              if (!hiveChar.equals(expectedWritable.getHiveChar())) {
+                TestCase.fail("Char field mismatch (expected '" + expectedWritable.getHiveChar() + "' found '" + hiveChar + "')");
+              }
+            }
+            break;
+          case VARCHAR:
+            {
+              HiveVarchar hiveVarchar = new HiveVarchar(string, ((VarcharTypeInfo) primitiveTypeInfo).getLength());
+              HiveVarcharWritable expectedWritable = (HiveVarcharWritable) expected;
+              if (!hiveVarchar.equals(expectedWritable.getHiveVarchar())) {
+                TestCase.fail("Varchar field mismatch (expected '" + expectedWritable.getHiveVarchar() + "' found '" + hiveVarchar + "')");
+              }
+            }
+            break;
+          case BINARY:
+            {
+               BytesWritable expectedWritable = (BytesWritable) expected;
+              if (stringBytes.length != expectedWritable.getLength()){
+                TestCase.fail("Byte Array field mismatch (expected " + expected + " found " + stringBytes + ")");
+              }
+              byte[] expectedBytes = expectedWritable.getBytes();
+              for (int b = 0; b < stringBytes.length; b++) {
+                if (stringBytes[b] != expectedBytes[b]) {
+                  TestCase.fail("Byte Array field mismatch (expected " + expected + " found " + stringBytes + ")");
+                }
+              }
+            }
+            break;
+          default:
+            throw new HiveException("Unexpected primitive category " + primitiveCategory);
           }
         }
         break;
       case DECIMAL:
         {
-          DeserializeRead.ReadDecimalResults readDecimalResults = deserializeRead.createReadDecimalResults();
-          deserializeRead.readHiveDecimal(readDecimalResults);
-          HiveDecimal value = readDecimalResults.getHiveDecimal();
+          HiveDecimal value = deserializeRead.currentHiveDecimalWritable.getHiveDecimal();
           if (value == null) {
             TestCase.fail("Decimal field evaluated to NULL");
           }
@@ -238,9 +249,7 @@ public class TestVectorSerDeRow extends TestCase {
         break;
     case TIMESTAMP:
       {
-        DeserializeRead.ReadTimestampResults readTimestampResults = deserializeRead.createReadTimestampResults();
-        deserializeRead.readTimestamp(readTimestampResults);
-        Timestamp value = readTimestampResults.getTimestamp();
+        Timestamp value = deserializeRead.currentTimestampWritable.getTimestamp();
         TimestampWritable expectedWritable = (TimestampWritable) expected;
         if (!value.equals(expectedWritable.getTimestamp())) {
           TestCase.fail("Timestamp field mismatch (expected " + expectedWritable.getTimestamp() + " found " + value.toString() + ")");
@@ -249,9 +258,7 @@ public class TestVectorSerDeRow extends TestCase {
       break;
     case INTERVAL_YEAR_MONTH:
       {
-        DeserializeRead.ReadIntervalYearMonthResults readIntervalYearMonthResults = deserializeRead.createReadIntervalYearMonthResults();
-        deserializeRead.readIntervalYearMonth(readIntervalYearMonthResults);
-        HiveIntervalYearMonth value = readIntervalYearMonthResults.getHiveIntervalYearMonth();
+        HiveIntervalYearMonth value = deserializeRead.currentHiveIntervalYearMonthWritable.getHiveIntervalYearMonth();
         HiveIntervalYearMonthWritable expectedWritable = (HiveIntervalYearMonthWritable) expected;
         HiveIntervalYearMonth expectedValue = expectedWritable.getHiveIntervalYearMonth();
         if (!value.equals(expectedValue)) {
@@ -261,9 +268,7 @@ public class TestVectorSerDeRow extends TestCase {
       break;
     case INTERVAL_DAY_TIME:
       {
-        DeserializeRead.ReadIntervalDayTimeResults readIntervalDayTimeResults = deserializeRead.createReadIntervalDayTimeResults();
-        deserializeRead.readIntervalDayTime(readIntervalDayTimeResults);
-        HiveIntervalDayTime value = readIntervalDayTimeResults.getHiveIntervalDayTime();
+        HiveIntervalDayTime value = deserializeRead.currentHiveIntervalDayTimeWritable.getHiveIntervalDayTime();
         HiveIntervalDayTimeWritable expectedWritable = (HiveIntervalDayTimeWritable) expected;
         HiveIntervalDayTime expectedValue = expectedWritable.getHiveIntervalDayTime();
         if (!value.equals(expectedValue)) {
@@ -271,26 +276,10 @@ public class TestVectorSerDeRow extends TestCase {
         }
       }
       break;
-    case BINARY:
-      {
-        DeserializeRead.ReadBinaryResults readBinaryResults = deserializeRead.createReadBinaryResults();
-        deserializeRead.readBinary(readBinaryResults);
-        byte[] byteArray = Arrays.copyOfRange(readBinaryResults.bytes, readBinaryResults.start, readBinaryResults.start + readBinaryResults.length);
-        BytesWritable expectedWritable = (BytesWritable) expected;
-        if (byteArray.length != expectedWritable.getLength()){
-          TestCase.fail("Byte Array field mismatch (expected " + expected + " found " + byteArray + ")");
-        }
-        byte[] expectedBytes = expectedWritable.getBytes();
-        for (int b = 0; b < byteArray.length; b++) {
-          if (byteArray[b] != expectedBytes[b]) {
-            TestCase.fail("Byte Array field mismatch (expected " + expected + " found " + byteArray + ")");
-          }
-        }
-      }
-      break;
-      default:
-        throw new HiveException("Unexpected primitive category " + primitiveCategory);
-      }
+
+    default:
+      throw new HiveException("Unexpected primitive category " + primitiveCategory);
+    }
     }
     deserializeRead.extraFieldsCheck();
     TestCase.assertTrue(!deserializeRead.readBeyondConfiguredFieldsWarned());
@@ -331,9 +320,8 @@ public class TestVectorSerDeRow extends TestCase {
     batchContext.init(source.rowStructObjectInspector(), emptyScratchTypeNames);
     VectorizedRowBatch batch = batchContext.createVectorizedRowBatch();
 
-    VectorAssignRowSameBatch vectorAssignRow = new VectorAssignRowSameBatch();
+    VectorAssignRow vectorAssignRow = new VectorAssignRow();
     vectorAssignRow.init(source.typeNames());
-    vectorAssignRow.setOneBatch(batch);
 
     int fieldCount = source.typeNames().size();
     DeserializeRead deserializeRead;
@@ -369,7 +357,7 @@ public class TestVectorSerDeRow extends TestCase {
     for (int i = 0; i < randomRows.length; i++) {
       Object[] row = randomRows[i];
 
-      vectorAssignRow.assignRow(batch.size, row);
+      vectorAssignRow.assignRow(batch, batch.size, row);
       batch.size++;
       if (batch.size == batch.DEFAULT_SIZE) {
         serializeBatch(batch, vectorSerializeRow, deserializeRead, source, randomRows, firstRandomRowIndex);
@@ -382,13 +370,13 @@ public class TestVectorSerDeRow extends TestCase {
     }
   }
 
-  void examineBatch(VectorizedRowBatch batch, VectorExtractRowSameBatch vectorExtractRow,
+  void examineBatch(VectorizedRowBatch batch, VectorExtractRow vectorExtractRow,
       Object[][] randomRows, int firstRandomRowIndex ) {
 
     int rowSize = vectorExtractRow.getCount();
     Object[] row = new Object[rowSize];
     for (int i = 0; i < batch.size; i++) {
-      vectorExtractRow.extractRow(i, row);
+      vectorExtractRow.extractRow(batch, i, row);
 
       Object[] expectedRow = randomRows[firstRandomRowIndex + i];
 
@@ -603,9 +591,8 @@ public class TestVectorSerDeRow extends TestCase {
       cv.noNulls = false;
     }
 
-    VectorExtractRowSameBatch vectorExtractRow = new VectorExtractRowSameBatch();
+    VectorExtractRow vectorExtractRow = new VectorExtractRow();
     vectorExtractRow.init(source.typeNames());
-    vectorExtractRow.setOneBatch(batch);
 
     Object[][] randomRows = source.randomRows(100000);
     int firstRandomRowIndex = 0;
@@ -614,7 +601,7 @@ public class TestVectorSerDeRow extends TestCase {
 
       Output output = serializeRow(row, source, serializeWrite);
       vectorDeserializeRow.setBytes(output.getData(), 0, output.getLength());
-      vectorDeserializeRow.deserializeByValue(batch, batch.size);
+      vectorDeserializeRow.deserialize(batch, batch.size);
       batch.size++;
       if (batch.size == batch.DEFAULT_SIZE) {
         examineBatch(batch, vectorExtractRow, randomRows, firstRandomRowIndex);

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
index 85923a8..4eb0249 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
@@ -80,6 +80,7 @@ import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.plan.MapWork;
 import org.apache.hadoop.hive.ql.plan.PartitionDesc;
 import org.apache.hadoop.hive.ql.plan.TableDesc;
+import org.apache.hadoop.hive.ql.plan.VectorPartitionDesc;
 import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.ColumnProjectionUtils;
 import org.apache.hadoop.hive.serde2.SerDe;
@@ -1700,7 +1701,10 @@ public class TestInputOutputFormat {
     Utilities.clearWorkMap(conf);
     conf.set("hive.exec.plan", workDir.toString());
     conf.set("mapred.job.tracker", "local");
-    conf.set("hive.vectorized.execution.enabled", Boolean.toString(isVectorized));
+    String isVectorizedString = Boolean.toString(isVectorized);
+    conf.set("hive.vectorized.execution.enabled", isVectorizedString);
+    conf.set(Utilities.VECTOR_MODE, isVectorizedString);
+    conf.set(Utilities.USE_VECTORIZED_INPUT_FILE_FORMAT, isVectorizedString);
     conf.set("fs.mock.impl", MockFileSystem.class.getName());
     conf.set("mapred.mapper.class", ExecMapper.class.getName());
     Path root = new Path(warehouseDir, tableName);
@@ -1767,6 +1771,10 @@ public class TestInputOutputFormat {
       LinkedHashMap<String, String> partSpec =
           new LinkedHashMap<String, String>();
       PartitionDesc part = new PartitionDesc(tbl, partSpec);
+      if (isVectorized) {
+        part.setVectorPartitionDesc(
+            VectorPartitionDesc.createVectorizedInputFileFormat("MockInputFileFormatClassName", false));
+      }
       partMap.put(partPath[p], part);
     }
     mapWork.setPathToAliases(aliasMap);

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/avro_schema_evolution_native.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/avro_schema_evolution_native.q b/ql/src/test/queries/clientpositive/avro_schema_evolution_native.q
index b32e1ec..efeb167 100644
--- a/ql/src/test/queries/clientpositive/avro_schema_evolution_native.q
+++ b/ql/src/test/queries/clientpositive/avro_schema_evolution_native.q
@@ -1,3 +1,4 @@
+set hive.cli.print.header=true;
 set hive.mapred.mode=nonstrict;
 -- SORT_QUERY_RESULTS
 -- Verify that table scans work with partitioned Avro tables
@@ -19,6 +20,7 @@ STORED AS AVRO;
 SET hive.exec.dynamic.partition.mode=nonstrict;
 INSERT OVERWRITE TABLE episodes_partitioned PARTITION (doctor_pt)
 SELECT title, air_date, doctor, doctor as doctor_pt FROM episodes;
+DESCRIBE FORMATTED episodes_partitioned;
 
 ALTER TABLE episodes_partitioned
 SET SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
@@ -51,7 +53,12 @@ SERDEPROPERTIES ('avro.schema.literal'='{
      }
   ]
 }');
+DESCRIBE FORMATTED episodes_partitioned;
 
+set hive.fetch.task.conversion=more;
+
+EXPLAIN
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6;
 
 SELECT * FROM episodes_partitioned WHERE doctor_pt > 6;
 
@@ -60,4 +67,15 @@ SELECT * FROM episodes_partitioned ORDER BY air_date LIMIT 5;
 -- Fetch w/filter to specific partition
 SELECT * FROM episodes_partitioned WHERE doctor_pt = 6;
 -- Fetch w/non-existent partition
+SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5;
+
+set hive.fetch.task.conversion=none;
+
+EXPLAIN
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6;
+
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6;
+
+SELECT * FROM episodes_partitioned ORDER BY air_date LIMIT 5;
+SELECT * FROM episodes_partitioned WHERE doctor_pt = 6;
 SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/bucket_groupby.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/bucket_groupby.q b/ql/src/test/queries/clientpositive/bucket_groupby.q
index ea35bd7..a36c79d 100644
--- a/ql/src/test/queries/clientpositive/bucket_groupby.q
+++ b/ql/src/test/queries/clientpositive/bucket_groupby.q
@@ -1,3 +1,4 @@
+SET hive.vectorized.execution.enabled=false;
 set hive.mapred.mode=nonstrict;
 create table clustergroupby(key string, value string) partitioned by(ds string);
 describe extended clustergroupby;
@@ -6,16 +7,16 @@ alter table clustergroupby clustered by (key) into 1 buckets;
 insert overwrite table clustergroupby partition (ds='100') select key, value from src sort by key;
 
 explain
-select key, count(1) from clustergroupby where ds='100' group by key limit 10;
-select key, count(1) from clustergroupby where ds='100' group by key limit 10;
+select key, count(1) from clustergroupby where ds='100' group by key order by key limit 10;
+select key, count(1) from clustergroupby where ds='100' group by key order by key limit 10;
 
 describe extended clustergroupby;
 insert overwrite table clustergroupby partition (ds='101') select key, value from src distribute by key;
 
 --normal--
 explain
-select key, count(1) from clustergroupby  where ds='101'  group by key limit 10;
-select key, count(1) from clustergroupby  where ds='101' group by key limit 10;
+select key, count(1) from clustergroupby  where ds='101'  group by key order by key limit 10;
+select key, count(1) from clustergroupby  where ds='101' group by key order by key limit 10;
 
 --function--
 explain
@@ -27,13 +28,13 @@ select abs(length(key)), count(1) from clustergroupby  where ds='101' group by a
 
 --constant--
 explain
-select key, count(1) from clustergroupby  where ds='101'  group by key,3 limit 10;
-select key, count(1) from clustergroupby  where ds='101' group by key,3 limit 10;
+select key, count(1) from clustergroupby  where ds='101'  group by key,3 order by key,3 limit 10;
+select key, count(1) from clustergroupby  where ds='101' group by key,3 order by key,3 limit 10;
 
 --subquery--
 explain
-select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10;
-select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10;
+select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key order by key limit 10;
+select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key order by key limit 10;
 
 explain
 select key, count(1) from clustergroupby  group by key;
@@ -52,11 +53,11 @@ describe extended clustergroupby;
 insert overwrite table clustergroupby partition (ds='102') select key, value from src distribute by value sort by key, value;
 
 explain
-select key, count(1) from clustergroupby  where ds='102'  group by key limit 10;
-select key, count(1) from clustergroupby  where ds='102' group by key limit 10;
+select key, count(1) from clustergroupby  where ds='102'  group by key order by key limit 10;
+select key, count(1) from clustergroupby  where ds='102' group by key order by key limit 10;
 explain
-select value, count(1) from clustergroupby  where ds='102'  group by value limit 10;
-select value, count(1) from clustergroupby  where ds='102'  group by value limit 10;
+select value, count(1) from clustergroupby  where ds='102'  group by value order by value limit 10;
+select value, count(1) from clustergroupby  where ds='102'  group by value order by value limit 10;
 explain
 select key, count(1) from clustergroupby  where ds='102'  group by key, value limit 10;
 select key, count(1) from clustergroupby  where ds='102'  group by key, value limit 10;
@@ -69,8 +70,8 @@ alter table clustergroupby clustered by (value, key) sorted by (key) into 1 buck
 describe extended clustergroupby;
 insert overwrite table clustergroupby partition (ds='103') select key, value from src distribute by value, key sort by key;
 explain
-select key, count(1) from clustergroupby  where ds='103'  group by key limit 10;
-select key, count(1) from clustergroupby  where ds='103' group by key limit 10;
+select key, count(1) from clustergroupby  where ds='103'  group by key order by key limit 10;
+select key, count(1) from clustergroupby  where ds='103' group by key order by key limit 10;
 explain
-select key, count(1) from clustergroupby  where ds='103'  group by value, key limit 10;
-select key, count(1) from clustergroupby  where ds='103' group by  value, key limit 10;
+select key, count(1) from clustergroupby  where ds='103'  group by value, key order by key limit 10;
+select key, count(1) from clustergroupby  where ds='103' group by  value, key order by key limit 10;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/groupby_sort_10.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/groupby_sort_10.q b/ql/src/test/queries/clientpositive/groupby_sort_10.q
index 910a272..3517693 100644
--- a/ql/src/test/queries/clientpositive/groupby_sort_10.q
+++ b/ql/src/test/queries/clientpositive/groupby_sort_10.q
@@ -2,6 +2,8 @@ set hive.mapred.mode=nonstrict;
 set hive.exec.reducers.max = 10;
 set hive.map.groupby.sorted=true;
 
+-- SORT_QUERY_RESULTS
+
 CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string)
 CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_part.q b/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_part.q
index fc935d5..b0e57fb 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_part.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_part.q
@@ -4,6 +4,9 @@ set hive.support.concurrency=true;
 set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
 SET hive.exec.schema.evolution=false;
 SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=true;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=false;
 set hive.fetch.task.conversion=none;
 set hive.exec.dynamic.partition.mode=nonstrict;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_table.q
index e49a0f3..ca6822c 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_table.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_orc_acidvec_mapwork_table.q
@@ -3,6 +3,9 @@ set hive.support.concurrency=true;
 set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
 SET hive.exec.schema.evolution=false;
 SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=true;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=false;
 set hive.fetch.task.conversion=none;
 set hive.exec.dynamic.partition.mode=nonstrict;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_orc_nonvec_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_orc_nonvec_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_orc_nonvec_mapwork_table.q
index 6c256ea..f05f02a 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_orc_nonvec_mapwork_table.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_orc_nonvec_mapwork_table.q
@@ -1,7 +1,5 @@
 set hive.cli.print.header=true;
 set hive.support.concurrency=true;
-set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-
 SET hive.vectorized.execution.enabled=false;
 set hive.fetch.task.conversion=none;
 set hive.exec.dynamic.partition.mode=nonstrict;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_part.q b/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_part.q
index 30b19bb..da726c5 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_part.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_part.q
@@ -2,6 +2,9 @@ set hive.mapred.mode=nonstrict;
 set hive.cli.print.header=true;
 SET hive.exec.schema.evolution=true;
 SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=true;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=false;
 set hive.fetch.task.conversion=more;
 set hive.exec.dynamic.partition.mode=nonstrict;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_table.q
index 6df2095..393967f 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_table.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_orc_vec_mapwork_table.q
@@ -1,8 +1,9 @@
 set hive.cli.print.header=true;
-set hive.support.concurrency=true;
-set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-
+SET hive.exec.schema.evolution=true;
 SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=true;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=false;
 set hive.fetch.task.conversion=none;
 set hive.exec.dynamic.partition.mode=nonstrict;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_fetchwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_fetchwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_text_fetchwork_table.q
deleted file mode 100644
index 44f7264..0000000
--- a/ql/src/test/queries/clientpositive/schema_evol_text_fetchwork_table.q
+++ /dev/null
@@ -1,56 +0,0 @@
-set hive.cli.print.header=true;
-set hive.support.concurrency=true;
-set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-SET hive.exec.schema.evolution=true;
-SET hive.vectorized.execution.enabled=false;
-set hive.fetch.task.conversion=none;
-set hive.exec.dynamic.partition.mode=nonstrict;
-
-
--- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE;
-
-insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
-
--- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string);
-
-insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty');
-
-insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred');
-
--- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1;
-select a,b,c from table1;
-select a,b,c,d from table1;
-select a,c,d from table1;
-select a,d from table1;
-select c from table1;
-select d from table1;
-
---
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE;
-
-insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
-
--- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int;
-
-insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new');
-
-insert into table table2 values(5000, 'new'),(90000, 'new');
-
-select a,b from table2;
-
-
-DROP TABLE table1;
-DROP TABLE table2;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_text_mapwork_table.q
deleted file mode 100644
index 44f7264..0000000
--- a/ql/src/test/queries/clientpositive/schema_evol_text_mapwork_table.q
+++ /dev/null
@@ -1,56 +0,0 @@
-set hive.cli.print.header=true;
-set hive.support.concurrency=true;
-set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-SET hive.exec.schema.evolution=true;
-SET hive.vectorized.execution.enabled=false;
-set hive.fetch.task.conversion=none;
-set hive.exec.dynamic.partition.mode=nonstrict;
-
-
--- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE;
-
-insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
-
--- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string);
-
-insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty');
-
-insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred');
-
--- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1;
-select a,b,c from table1;
-select a,b,c,d from table1;
-select a,c,d from table1;
-select a,d from table1;
-select c from table1;
-select d from table1;
-
---
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE;
-
-insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
-
--- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int;
-
-insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new');
-
-insert into table table2 values(5000, 'new'),(90000, 'new');
-
-select a,b from table2;
-
-
-DROP TABLE table1;
-DROP TABLE table2;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_part.q b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_part.q
deleted file mode 100644
index 4d78642..0000000
--- a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_part.q
+++ /dev/null
@@ -1,98 +0,0 @@
-set hive.mapred.mode=nonstrict;
-set hive.cli.print.header=true;
-SET hive.exec.schema.evolution=true;
-SET hive.vectorized.execution.enabled=false;
-set hive.fetch.task.conversion=more;
-set hive.exec.dynamic.partition.mode=nonstrict;
-
-
--- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, FetchWork, Partitioned
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
-
-insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
-
--- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string);
-
-insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty');
-
-insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred');
-
--- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1;
-select part,a,b,c from partitioned1;
-select part,a,b,c,d from partitioned1;
-select part,a,c,d from partitioned1;
-select part,a,d from partitioned1;
-select part,c from partitioned1;
-select part,d from partitioned1;
-
---
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
-
-insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
-
--- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int;
-
-insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new');
-
-insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new');
-
-select part,a,b from partitioned2;
-
-
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
-
-insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
-
--- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string);
-
-insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1);
-
--- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1;
-select part,a,b,c from partitioned1;
-select part,a,b,c,d from partitioned1;
-select part,a,c,d from partitioned1;
-select part,a,d from partitioned1;
-select part,c from partitioned1;
-select part,d from partitioned1;
-
-
---
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
-
-insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
-
--- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int;
-
-insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1);
-
-select part,a,b from partitioned4;
-
-
-DROP TABLE partitioned1;
-DROP TABLE partitioned2;
-DROP TABLE partitioned3;
-DROP TABLE partitioned4;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_table.q
deleted file mode 100644
index 0834351..0000000
--- a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_fetchwork_table.q
+++ /dev/null
@@ -1,67 +0,0 @@
-set hive.cli.print.header=true;
-SET hive.exec.schema.evolution=true;
-SET hive.vectorized.execution.enabled=true;
-set hive.fetch.task.conversion=more;
-
--- SORT_QUERY_RESULTS
---
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE;
-
-insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
-
-select a,b from table1;
-
--- ADD COLUMNS
-alter table table1 add columns(c int, d string);
-
-insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty');
-
-select a,b,c,d from table1;
-
--- ADD COLUMNS
-alter table table1 add columns(e string);
-
-insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2');
-
-select a,b,c,d,e from table1;
-
-
---
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE;
-
-insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
-
-select a,b from table3;
-
--- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int;
-
-insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new');
-
-select a,b from table3;
-
--- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string);
-
-insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6');
-
-select a,b from table3;
-
-
--- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int;
-
-select a,b from table3;
-
-
-DROP TABLE table1;
-DROP TABLE table2;
-DROP TABLE table3;
\ No newline at end of file


[21/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q.out
new file mode 100644
index 0000000..7f125fa
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q.out
@@ -0,0 +1,3058 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	true	0004-09-22 18:26:29.519542222	original
+2	1	45	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		2007-02-09 05:17:29.368756876	original
+3	1	NULL	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	6229-06-28 02:54:28.970117179	original
+4	1	1	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	time will come	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_boolean
+            Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: boolean), c2 (type: boolean), c3 (type: boolean), c4 (type: boolean), c5 (type: boolean), c6 (type: boolean), c7 (type: boolean), c8 (type: boolean), c9 (type: boolean), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+              Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: boolean), _col3 (type: boolean), _col4 (type: boolean), _col5 (type: boolean), _col6 (type: boolean), _col7 (type: boolean), _col8 (type: boolean), _col9 (type: boolean), _col10 (type: boolean), _col11 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: boolean), VALUE._col2 (type: boolean), VALUE._col3 (type: boolean), VALUE._col4 (type: boolean), VALUE._col5 (type: boolean), VALUE._col6 (type: boolean), VALUE._col7 (type: boolean), VALUE._col8 (type: boolean), VALUE._col9 (type: boolean), VALUE._col10 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+          Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+PREHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+POSTHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	true	true	true	true	true	true	true	true	original
+2	1	true	true	true	true	true	true	true	false	true	original
+3	1	NULL	NULL	true	true	true	true	true	true	true	original
+4	1	true	NULL	true	true	true	true	true	true	true	original
+5	2	NULL	NULL	false	NULL	NULL	false	false	NULL	false	new
+6	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	true	NULL	new
+PREHOOK: query: drop table part_change_various_various_boolean
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: drop table part_change_various_various_boolean
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_tinyint
+            Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: tinyint), c2 (type: tinyint), c3 (type: tinyint), c4 (type: tinyint), c5 (type: tinyint), c6 (type: tinyint), c7 (type: tinyint), c8 (type: tinyint), c9 (type: tinyint), c10 (type: tinyint), c11 (type: tinyint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: tinyint), _col3 (type: tinyint), _col4 (type: tinyint), _col5 (type: tinyint), _col6 (type: tinyint), _col7 (type: tinyint), _col8 (type: tinyint), _col9 (type: tinyint), _col10 (type: tinyint), _col11 (type: tinyint), _col12 (type: tinyint), _col13 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: tinyint), VALUE._col2 (type: tinyint), VALUE._col3 (type: tinyint), VALUE._col4 (type: tinyint), VALUE._col5 (type: tinyint), VALUE._col6 (type: tinyint), VALUE._col7 (type: tinyint), VALUE._col8 (type: tinyint), VALUE._col9 (type: tinyint), VALUE._col10 (type: tinyint), VALUE._col11 (type: tinyint), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+PREHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	-48	-51	-66	-29	119	119	73	73	73	-43	original
+2	1	NULL	-24	-63	-25	-67	34	34	NULL	NULL	NULL	105	original
+3	1	0	NULL	-66	-38	30	85	85	1	1	1	84	original
+4	1	NULL	NULL	87	6	34	36	36	-77	-77	-77	60	original
+5	2	23	71	127	1	NULL	-60	68	NULL	NULL	40	93	new
+6	1	NULL	85	-126	NULL	91	113	-28	-63	0	8	NULL	new
+PREHOOK: query: drop table part_change_various_various_tinyint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: drop table part_change_various_various_tinyint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	100	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	-90	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_smallint
+            Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: smallint), c2 (type: smallint), c3 (type: smallint), c4 (type: smallint), c5 (type: smallint), c6 (type: smallint), c7 (type: smallint), c8 (type: smallint), c9 (type: smallint), c10 (type: smallint), c11 (type: smallint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: smallint), _col4 (type: smallint), _col5 (type: smallint), _col6 (type: smallint), _col7 (type: smallint), _col8 (type: smallint), _col9 (type: smallint), _col10 (type: smallint), _col11 (type: smallint), _col12 (type: smallint), _col13 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: smallint), VALUE._col2 (type: smallint), VALUE._col3 (type: smallint), VALUE._col4 (type: smallint), VALUE._col5 (type: smallint), VALUE._col6 (type: smallint), VALUE._col7 (type: smallint), VALUE._col8 (type: smallint), VALUE._col9 (type: smallint), VALUE._col10 (type: smallint), VALUE._col11 (type: smallint), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+PREHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+POSTHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	7373	-32578	-29	119	119	-2999	-2999	-2999	-11819	original
+2	1	NULL	100	25025	29415	-3651	-19422	-19422	NULL	NULL	NULL	29801	original
+3	1	0	72	-32578	-27686	30	-939	-939	1	1	1	-8620	original
+4	1	NULL	-90	14935	12294	-19422	9764	9764	5299	5299	5299	-17092	original
+5	2	-30486	15230	3117	1	-117	-7131	20227	-24858	-28771	NULL	NULL	new
+6	1	NULL	NULL	-4844	15507	91	22385	-28	-12268	0	NULL	NULL	new
+PREHOOK: query: drop table part_change_various_various_smallint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: drop table part_change_various_various_smallint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	100	NULL	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_int
+            Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: int), c2 (type: int), c3 (type: int), c4 (type: int), c5 (type: int), c6 (type: int), c7 (type: int), c8 (type: int), c9 (type: int), c10 (type: int), c11 (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: int), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: int), _col8 (type: int), _col9 (type: int), _col10 (type: int), _col11 (type: int), _col12 (type: int), _col13 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: int), VALUE._col3 (type: int), VALUE._col4 (type: int), VALUE._col5 (type: int), VALUE._col6 (type: int), VALUE._col7 (type: int), VALUE._col8 (type: int), VALUE._col9 (type: int), VALUE._col10 (type: int), VALUE._col11 (type: int), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+PREHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+POSTHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-1888628267	original
+2	1	NULL	100	NULL	1903063783	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	1272503892	original
+4	1	NULL	-90	NULL	3289094	46114	9250340	9250340	5299	5299	5299	1021033788	original
+5	2	560930	-1281818	127	1	84269672	-60	27094665	-36016110	-182	3244222	561431	new
+6	1	NULL	NULL	NULL	-167	91	113	-164341325	-134237413	0	6229	NULL	new
+PREHOOK: query: drop table part_change_various_various_int
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: drop table part_change_various_various_int
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	100	NULL	NULL	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	1998287.3541	1998287.3541             	1998287.3541	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_bigint
+            Statistics: Num rows: 6 Data size: 682 Basi

<TRUNCATED>

[29/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/avro_schema_evolution_native.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/avro_schema_evolution_native.q.out b/ql/src/test/results/clientpositive/avro_schema_evolution_native.q.out
index 98e541a..852a679 100644
--- a/ql/src/test/results/clientpositive/avro_schema_evolution_native.q.out
+++ b/ql/src/test/results/clientpositive/avro_schema_evolution_native.q.out
@@ -81,6 +81,44 @@ POSTHOOK: Lineage: episodes_partitioned PARTITION(doctor_pt=6).title SIMPLE [(ep
 POSTHOOK: Lineage: episodes_partitioned PARTITION(doctor_pt=9).air_date SIMPLE [(episodes)episodes.FieldSchema(name:air_date, type:string, comment:initial date), ]
 POSTHOOK: Lineage: episodes_partitioned PARTITION(doctor_pt=9).doctor SIMPLE [(episodes)episodes.FieldSchema(name:doctor, type:int, comment:main actor playing the Doctor in episode), ]
 POSTHOOK: Lineage: episodes_partitioned PARTITION(doctor_pt=9).title SIMPLE [(episodes)episodes.FieldSchema(name:title, type:string, comment:episode title), ]
+title	air_date	doctor	doctor_pt
+PREHOOK: query: DESCRIBE FORMATTED episodes_partitioned
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@episodes_partitioned
+POSTHOOK: query: DESCRIBE FORMATTED episodes_partitioned
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@episodes_partitioned
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+title               	string              	episode title       
+air_date            	string              	initial date        
+doctor              	int                 	main actor playing the Doctor in episode
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+doctor_pt           	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.avro.AvroSerDe	 
+InputFormat:        	org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
 PREHOOK: query: ALTER TABLE episodes_partitioned
 SET SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
 WITH
@@ -149,6 +187,69 @@ SERDEPROPERTIES ('avro.schema.literal'='{
 POSTHOOK: type: ALTERTABLE_SERIALIZER
 POSTHOOK: Input: default@episodes_partitioned
 POSTHOOK: Output: default@episodes_partitioned
+PREHOOK: query: DESCRIBE FORMATTED episodes_partitioned
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@episodes_partitioned
+POSTHOOK: query: DESCRIBE FORMATTED episodes_partitioned
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@episodes_partitioned
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+title               	string              	episode title       
+air_date            	string              	initial date        
+doctor              	int                 	main actor playing the Doctor in episode
+value               	int                 	default value       
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+doctor_pt           	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.avro.AvroSerDe	 
+InputFormat:        	org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	avro.schema.literal 	{\n  \"namespace\": \"testing.hive.avro.serde\",\n  \"name\": \"episodes\",\n  \"type\": \"record\",\n  \"fields\": [\n    {\n      \"name\":\"title\",\n      \"type\":\"string\",\n      \"doc\":\"episode title\"\n    },\n    {\n      \"name\":\"air_date\",\n      \"type\":\"string\",\n      \"doc\":\"initial date\"\n    },\n    {\n      \"name\":\"doctor\",\n      \"type\":\"int\",\n      \"doc\":\"main actor playing the Doctor in episode\"\n    },\n     {\n       \"name\":\"value\",\n       \"type\":\"int\",\n       \"default\":0,\n       \"doc\":\"default value\"\n     }\n  ]\n}
+	serialization.format	1                   
+PREHOOK: query: EXPLAIN
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-0 is a root stage
+
+STAGE PLANS:
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        TableScan
+          alias: episodes_partitioned
+          Statistics: Num rows: 3 Data size: 889 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: title (type: string), air_date (type: string), doctor (type: int), value (type: int), doctor_pt (type: int)
+            outputColumnNames: _col0, _col1, _col2, _col3, _col4
+            Statistics: Num rows: 3 Data size: 889 Basic stats: COMPLETE Column stats: NONE
+            ListSink
+
 PREHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
 PREHOOK: type: QUERY
 PREHOOK: Input: default@episodes_partitioned
@@ -161,6 +262,7 @@ POSTHOOK: Input: default@episodes_partitioned
 POSTHOOK: Input: default@episodes_partitioned@doctor_pt=11
 POSTHOOK: Input: default@episodes_partitioned@doctor_pt=9
 #### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
 Rose	26 March 2005	9	0	9
 The Doctor's Wife	14 May 2011	11	0	11
 The Eleventh Hour	3 April 2010	11	0	11
@@ -188,6 +290,7 @@ POSTHOOK: Input: default@episodes_partitioned@doctor_pt=5
 POSTHOOK: Input: default@episodes_partitioned@doctor_pt=6
 POSTHOOK: Input: default@episodes_partitioned@doctor_pt=9
 #### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
 An Unearthly Child	23 November 1963	1	0	1
 Horror of Fang Rock	3 September 1977	4	0	4
 Rose	26 March 2005	9	0	9
@@ -205,6 +308,7 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@episodes_partitioned
 POSTHOOK: Input: default@episodes_partitioned@doctor_pt=6
 #### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
 The Mysterious Planet	6 September 1986	6	0	6
 PREHOOK: query: -- Fetch w/non-existent partition
 SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5
@@ -216,3 +320,105 @@ SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@episodes_partitioned
 #### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
+PREHOOK: query: EXPLAIN
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: episodes_partitioned
+            Statistics: Num rows: 3 Data size: 889 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: title (type: string), air_date (type: string), doctor (type: int), value (type: int), doctor_pt (type: int)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4
+              Statistics: Num rows: 3 Data size: 889 Basic stats: COMPLETE Column stats: NONE
+              File Output Operator
+                compressed: false
+                Statistics: Num rows: 3 Data size: 889 Basic stats: COMPLETE Column stats: NONE
+                table:
+                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
+PREHOOK: type: QUERY
+PREHOOK: Input: default@episodes_partitioned
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=11
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=9
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt > 6
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@episodes_partitioned
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=11
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=9
+#### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
+Rose	26 March 2005	9	0	9
+The Doctor's Wife	14 May 2011	11	0	11
+The Eleventh Hour	3 April 2010	11	0	11
+PREHOOK: query: SELECT * FROM episodes_partitioned ORDER BY air_date LIMIT 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@episodes_partitioned
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=1
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=11
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=2
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=4
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=5
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=6
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=9
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM episodes_partitioned ORDER BY air_date LIMIT 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@episodes_partitioned
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=1
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=11
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=2
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=4
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=5
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=6
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=9
+#### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
+An Unearthly Child	23 November 1963	1	0	1
+Horror of Fang Rock	3 September 1977	4	0	4
+Rose	26 March 2005	9	0	9
+The Doctor's Wife	14 May 2011	11	0	11
+The Eleventh Hour	3 April 2010	11	0	11
+PREHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt = 6
+PREHOOK: type: QUERY
+PREHOOK: Input: default@episodes_partitioned
+PREHOOK: Input: default@episodes_partitioned@doctor_pt=6
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt = 6
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@episodes_partitioned
+POSTHOOK: Input: default@episodes_partitioned@doctor_pt=6
+#### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt
+The Mysterious Planet	6 September 1986	6	0	6
+PREHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5
+PREHOOK: type: QUERY
+PREHOOK: Input: default@episodes_partitioned
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM episodes_partitioned WHERE doctor_pt = 7 LIMIT 5
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@episodes_partitioned
+#### A masked pattern was here ####
+episodes_partitioned.title	episodes_partitioned.air_date	episodes_partitioned.doctor	episodes_partitioned.value	episodes_partitioned.doctor_pt

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/bucket_groupby.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/bucket_groupby.q.out b/ql/src/test/results/clientpositive/bucket_groupby.q.out
index d1414fe..ae736f9 100644
--- a/ql/src/test/results/clientpositive/bucket_groupby.q.out
+++ b/ql/src/test/results/clientpositive/bucket_groupby.q.out
@@ -41,14 +41,15 @@ POSTHOOK: Output: default@clustergroupby@ds=100
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=100).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=100).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
 PREHOOK: query: explain
-select key, count(1) from clustergroupby where ds='100' group by key limit 10
+select key, count(1) from clustergroupby where ds='100' group by key order by key limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select key, count(1) from clustergroupby where ds='100' group by key limit 10
+select key, count(1) from clustergroupby where ds='100' group by key order by key limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -72,7 +73,6 @@ STAGE PLANS:
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -81,6 +81,28 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0, _col1
           Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
           Limit
             Number of rows: 10
             Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
@@ -98,12 +120,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from clustergroupby where ds='100' group by key limit 10
+PREHOOK: query: select key, count(1) from clustergroupby where ds='100' group by key order by key limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=100
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from clustergroupby where ds='100' group by key limit 10
+POSTHOOK: query: select key, count(1) from clustergroupby where ds='100' group by key order by key limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=100
@@ -146,15 +168,16 @@ POSTHOOK: Lineage: clustergroupby PARTITION(ds=101).key SIMPLE [(src)src.FieldSc
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=101).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
 PREHOOK: query: --normal--
 explain
-select key, count(1) from clustergroupby  where ds='101'  group by key limit 10
+select key, count(1) from clustergroupby  where ds='101'  group by key order by key limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: --normal--
 explain
-select key, count(1) from clustergroupby  where ds='101'  group by key limit 10
+select key, count(1) from clustergroupby  where ds='101'  group by key order by key limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -178,7 +201,6 @@ STAGE PLANS:
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -187,6 +209,28 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0, _col1
           Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
           Limit
             Number of rows: 10
             Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
@@ -204,12 +248,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key limit 10
+PREHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key order by key limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=101
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key limit 10
+POSTHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key order by key limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=101
@@ -370,15 +414,16 @@ POSTHOOK: Input: default@clustergroupby@ds=101
 3	416
 PREHOOK: query: --constant--
 explain
-select key, count(1) from clustergroupby  where ds='101'  group by key,3 limit 10
+select key, count(1) from clustergroupby  where ds='101'  group by key,3 order by key,3 limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: --constant--
 explain
-select key, count(1) from clustergroupby  where ds='101'  group by key,3 limit 10
+select key, count(1) from clustergroupby  where ds='101'  group by key,3 order by key,3 limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -402,7 +447,6 @@ STAGE PLANS:
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), 3 (type: int)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col2 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -415,16 +459,38 @@ STAGE PLANS:
             expressions: _col0 (type: string), _col2 (type: bigint)
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
-            Limit
-              Number of rows: 10
+            File Output Operator
+              compressed: false
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string), 3 (type: int)
+              sort order: ++
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          Limit
+            Number of rows: 10
+            Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
               Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
-              File Output Operator
-                compressed: false
-                Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
-                table:
-                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
-                    output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator
@@ -432,12 +498,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key,3 limit 10
+PREHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key,3 order by key,3 limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=101
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key,3 limit 10
+POSTHOOK: query: select key, count(1) from clustergroupby  where ds='101' group by key,3 order by key,3 limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=101
@@ -454,15 +520,16 @@ POSTHOOK: Input: default@clustergroupby@ds=101
 114	1
 PREHOOK: query: --subquery--
 explain
-select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10
+select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key order by key limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: --subquery--
 explain
-select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10
+select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key order by key limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -486,7 +553,6 @@ STAGE PLANS:
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -495,6 +561,28 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0, _col1
           Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
           Limit
             Number of rows: 10
             Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
@@ -512,12 +600,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10
+PREHOOK: query: select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key order by key limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=101
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key limit 10
+POSTHOOK: query: select key, count(1) from (select value as key, key as value from clustergroupby where ds='101')subq group by key order by key limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=101
@@ -1020,14 +1108,15 @@ POSTHOOK: Output: default@clustergroupby@ds=102
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=102).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=102).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
 PREHOOK: query: explain
-select key, count(1) from clustergroupby  where ds='102'  group by key limit 10
+select key, count(1) from clustergroupby  where ds='102'  group by key order by key limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select key, count(1) from clustergroupby  where ds='102'  group by key limit 10
+select key, count(1) from clustergroupby  where ds='102'  group by key order by key limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -1052,7 +1141,6 @@ STAGE PLANS:
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -1061,6 +1149,28 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0, _col1
           Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
           Limit
             Number of rows: 10
             Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
@@ -1078,12 +1188,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from clustergroupby  where ds='102' group by key limit 10
+PREHOOK: query: select key, count(1) from clustergroupby  where ds='102' group by key order by key limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=102
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from clustergroupby  where ds='102' group by key limit 10
+POSTHOOK: query: select key, count(1) from clustergroupby  where ds='102' group by key order by key limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=102
@@ -1099,14 +1209,15 @@ POSTHOOK: Input: default@clustergroupby@ds=102
 113	2
 114	1
 PREHOOK: query: explain
-select value, count(1) from clustergroupby  where ds='102'  group by value limit 10
+select value, count(1) from clustergroupby  where ds='102'  group by value order by value limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select value, count(1) from clustergroupby  where ds='102'  group by value limit 10
+select value, count(1) from clustergroupby  where ds='102'  group by value order by value limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -1130,7 +1241,6 @@ STAGE PLANS:
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -1139,6 +1249,28 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0, _col1
           Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
           Limit
             Number of rows: 10
             Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
@@ -1156,12 +1288,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select value, count(1) from clustergroupby  where ds='102'  group by value limit 10
+PREHOOK: query: select value, count(1) from clustergroupby  where ds='102'  group by value order by value limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=102
 #### A masked pattern was here ####
-POSTHOOK: query: select value, count(1) from clustergroupby  where ds='102'  group by value limit 10
+POSTHOOK: query: select value, count(1) from clustergroupby  where ds='102'  group by value order by value limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=102
@@ -1297,14 +1429,15 @@ POSTHOOK: Output: default@clustergroupby@ds=103
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=103).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
 POSTHOOK: Lineage: clustergroupby PARTITION(ds=103).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
 PREHOOK: query: explain
-select key, count(1) from clustergroupby  where ds='103'  group by key limit 10
+select key, count(1) from clustergroupby  where ds='103'  group by key order by key limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select key, count(1) from clustergroupby  where ds='103'  group by key limit 10
+select key, count(1) from clustergroupby  where ds='103'  group by key order by key limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -1329,7 +1462,6 @@ STAGE PLANS:
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col1 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -1338,6 +1470,28 @@ STAGE PLANS:
           mode: mergepartial
           outputColumnNames: _col0, _col1
           Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
           Limit
             Number of rows: 10
             Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
@@ -1355,12 +1509,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by key limit 10
+PREHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by key order by key limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=103
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by key limit 10
+POSTHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by key order by key limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=103
@@ -1376,14 +1530,15 @@ POSTHOOK: Input: default@clustergroupby@ds=103
 113	2
 114	1
 PREHOOK: query: explain
-select key, count(1) from clustergroupby  where ds='103'  group by value, key limit 10
+select key, count(1) from clustergroupby  where ds='103'  group by value, key order by key limit 10
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select key, count(1) from clustergroupby  where ds='103'  group by value, key limit 10
+select key, count(1) from clustergroupby  where ds='103'  group by value, key order by key limit 10
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -1407,7 +1562,6 @@ STAGE PLANS:
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
-                  TopN Hash Memory Usage: 0.1
                   value expressions: _col2 (type: bigint)
       Reduce Operator Tree:
         Group By Operator
@@ -1420,16 +1574,38 @@ STAGE PLANS:
             expressions: _col1 (type: string), _col2 (type: bigint)
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
-            Limit
-              Number of rows: 10
+            File Output Operator
+              compressed: false
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.1
+              value expressions: _col1 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+          Limit
+            Number of rows: 10
+            Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
               Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
-              File Output Operator
-                compressed: false
-                Statistics: Num rows: 10 Data size: 100 Basic stats: COMPLETE Column stats: NONE
-                table:
-                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
-                    output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
-                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator
@@ -1437,12 +1613,12 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by  value, key limit 10
+PREHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by  value, key order by key limit 10
 PREHOOK: type: QUERY
 PREHOOK: Input: default@clustergroupby
 PREHOOK: Input: default@clustergroupby@ds=103
 #### A masked pattern was here ####
-POSTHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by  value, key limit 10
+POSTHOOK: query: select key, count(1) from clustergroupby  where ds='103' group by  value, key order by key limit 10
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@clustergroupby
 POSTHOOK: Input: default@clustergroupby@ds=103

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/groupby_sort_10.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_sort_10.q.out b/ql/src/test/results/clientpositive/groupby_sort_10.q.out
index c682e95..9b8d388 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_10.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_10.q.out
@@ -1,9 +1,13 @@
-PREHOOK: query: CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string)
+PREHOOK: query: -- SORT_QUERY_RESULTS
+
+CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string)
 CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@T1
-POSTHOOK: query: CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string)
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+
+CREATE TABLE T1(key STRING, val STRING) PARTITIONED BY (ds string)
 CLUSTERED BY (key) SORTED BY (key) INTO 2 BUCKETS
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_fetchwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_fetchwork_table.q.out b/ql/src/test/results/clientpositive/schema_evol_text_fetchwork_table.q.out
deleted file mode 100644
index f849004..0000000
--- a/ql/src/test/results/clientpositive/schema_evol_text_fetchwork_table.q.out
+++ /dev/null
@@ -1,298 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	new
-1	original
-2	new
-2	original
-3	new
-3	original
-4	new
-4	original
-5	new
-6	new
-PREHOOK: query: select a,b,c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c
-1	new	10
-1	original	NULL
-2	new	20
-2	original	NULL
-3	new	30
-3	original	NULL
-4	new	40
-4	original	NULL
-5	new	100
-6	new	200
-PREHOOK: query: select a,b,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-5	new	100	hundred
-6	new	200	two hundred
-PREHOOK: query: select a,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	c	d
-1	10	ten
-1	NULL	NULL
-2	20	twenty
-2	NULL	NULL
-3	30	thirty
-3	NULL	NULL
-4	40	forty
-4	NULL	NULL
-5	100	hundred
-6	200	two hundred
-PREHOOK: query: select a,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	d
-1	NULL
-1	ten
-2	NULL
-2	twenty
-3	NULL
-3	thirty
-4	NULL
-4	forty
-5	hundred
-6	two hundred
-PREHOOK: query: select c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-c
-10
-100
-20
-200
-30
-40
-NULL
-NULL
-NULL
-NULL
-PREHOOK: query: select d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-d
-NULL
-NULL
-NULL
-NULL
-forty
-hundred
-ten
-thirty
-twenty
-two hundred
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table2
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table2
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: DROP TABLE table1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: DROP TABLE table2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: DROP TABLE table2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_mapwork_table.q.out b/ql/src/test/results/clientpositive/schema_evol_text_mapwork_table.q.out
deleted file mode 100644
index f849004..0000000
--- a/ql/src/test/results/clientpositive/schema_evol_text_mapwork_table.q.out
+++ /dev/null
@@ -1,298 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	new
-1	original
-2	new
-2	original
-3	new
-3	original
-4	new
-4	original
-5	new
-6	new
-PREHOOK: query: select a,b,c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c
-1	new	10
-1	original	NULL
-2	new	20
-2	original	NULL
-3	new	30
-3	original	NULL
-4	new	40
-4	original	NULL
-5	new	100
-6	new	200
-PREHOOK: query: select a,b,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-5	new	100	hundred
-6	new	200	two hundred
-PREHOOK: query: select a,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	c	d
-1	10	ten
-1	NULL	NULL
-2	20	twenty
-2	NULL	NULL
-3	30	thirty
-3	NULL	NULL
-4	40	forty
-4	NULL	NULL
-5	100	hundred
-6	200	two hundred
-PREHOOK: query: select a,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	d
-1	NULL
-1	ten
-2	NULL
-2	twenty
-3	NULL
-3	thirty
-4	NULL
-4	forty
-5	hundred
-6	two hundred
-PREHOOK: query: select c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-c
-10
-100
-20
-200
-30
-40
-NULL
-NULL
-NULL
-NULL
-PREHOOK: query: select d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-d
-NULL
-NULL
-NULL
-NULL
-forty
-hundred
-ten
-thirty
-twenty
-two hundred
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table2
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table2
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: DROP TABLE table1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: DROP TABLE table2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: DROP TABLE table2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2


[18/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..8af1b4f
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_complex.q.out
@@ -0,0 +1,732 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_struct1
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), s1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), _col3 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_various_various_struct2
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_to_various_various_struct4
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4


[40/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)


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

Branch: refs/heads/master
Commit: d5285d8ebaf5bef2a13b2c2338be2fe683804b02
Parents: 2f0339b
Author: Matt McCline <mm...@hortonworks.com>
Authored: Mon May 2 16:58:53 2016 -0700
Committer: Matt McCline <mm...@hortonworks.com>
Committed: Mon May 2 16:58:53 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/conf/HiveConf.java   |    9 +
 data/files/struct1_a.txt                        |    4 +
 data/files/struct1_b.txt                        |    1 +
 data/files/struct1_c.txt                        |    1 +
 data/files/struct2_a.txt                        |    2 +
 data/files/struct2_b.txt                        |    2 +
 data/files/struct2_c.txt                        |    1 +
 data/files/struct2_d.txt                        |    1 +
 data/files/struct3_a.txt                        |    2 +
 data/files/struct3_b.txt                        |    1 +
 data/files/struct3_c.txt                        |    1 +
 data/files/struct4_a.txt                        |    2 +
 data/files/struct4_b.txt                        |    1 +
 data/files/struct4_c.txt                        |    1 +
 .../test/resources/testconfiguration.properties |   28 +-
 .../hive/llap/io/api/impl/LlapInputFormat.java  |    2 +-
 .../hive/ql/exec/AbstractMapOperator.java       |  178 +
 .../apache/hadoop/hive/ql/exec/MapOperator.java |   86 +-
 .../apache/hadoop/hive/ql/exec/Utilities.java   |   33 +-
 .../hadoop/hive/ql/exec/mr/ExecMapper.java      |    3 +-
 .../ql/exec/spark/SparkMapRecordHandler.java    |    3 +-
 .../hadoop/hive/ql/exec/tez/DagUtils.java       |    3 +-
 .../hive/ql/exec/tez/MapRecordProcessor.java    |   15 +-
 .../hive/ql/exec/tez/MapRecordSource.java       |    6 +-
 .../hive/ql/exec/tez/ReduceRecordSource.java    |    4 +-
 .../vector/VectorAppMasterEventOperator.java    |   16 +-
 .../hive/ql/exec/vector/VectorAssignRow.java    | 1111 ++--
 .../ql/exec/vector/VectorAssignRowDynBatch.java |   41 -
 .../exec/vector/VectorAssignRowSameBatch.java   |   36 -
 .../ql/exec/vector/VectorDeserializeRow.java    | 1114 ++--
 .../hive/ql/exec/vector/VectorExtractRow.java   |  971 +---
 .../exec/vector/VectorExtractRowDynBatch.java   |   40 -
 .../exec/vector/VectorExtractRowSameBatch.java  |   36 -
 .../ql/exec/vector/VectorFileSinkOperator.java  |   16 +-
 .../ql/exec/vector/VectorGroupByOperator.java   |   13 +-
 .../exec/vector/VectorMapJoinBaseOperator.java  |   11 +-
 .../ql/exec/vector/VectorMapJoinOperator.java   |    4 +-
 .../VectorMapJoinOuterFilteredOperator.java     |   17 +-
 .../hive/ql/exec/vector/VectorMapOperator.java  |  848 ++-
 .../exec/vector/VectorReduceSinkOperator.java   |   16 +-
 .../exec/vector/VectorSMBMapJoinOperator.java   |   11 +-
 .../VectorSparkHashTableSinkOperator.java       |   16 +-
 ...VectorSparkPartitionPruningSinkOperator.java |   13 +-
 .../ql/exec/vector/VectorizationContext.java    |   12 +-
 .../ql/exec/vector/VectorizedBatchUtil.java     |   49 +
 .../VectorMapJoinGenerateResultOperator.java    |    8 +-
 .../fast/VectorMapJoinFastLongHashUtil.java     |   10 +-
 .../fast/VectorMapJoinFastStringCommon.java     |   10 +-
 .../hadoop/hive/ql/io/HiveInputFormat.java      |    6 +-
 .../hadoop/hive/ql/io/NullRowsInputFormat.java  |    2 +-
 .../hadoop/hive/ql/io/orc/OrcInputFormat.java   |    4 +-
 .../ql/io/parquet/MapredParquetInputFormat.java |    2 +-
 .../hive/ql/optimizer/physical/Vectorizer.java  |  334 +-
 .../apache/hadoop/hive/ql/plan/BaseWork.java    |   23 +
 .../org/apache/hadoop/hive/ql/plan/MapWork.java |   11 +
 .../hive/ql/plan/VectorPartitionConversion.java |  172 +-
 .../hive/ql/plan/VectorPartitionDesc.java       |  164 +-
 .../ql/exec/vector/TestVectorRowObject.java     |   14 +-
 .../hive/ql/exec/vector/TestVectorSerDeRow.java |  169 +-
 .../hive/ql/io/orc/TestInputOutputFormat.java   |   10 +-
 .../avro_schema_evolution_native.q              |   18 +
 .../queries/clientpositive/bucket_groupby.q     |   33 +-
 .../queries/clientpositive/groupby_sort_10.q    |    2 +
 .../schema_evol_orc_acidvec_mapwork_part.q      |    3 +
 .../schema_evol_orc_acidvec_mapwork_table.q     |    3 +
 .../schema_evol_orc_nonvec_mapwork_table.q      |    2 -
 .../schema_evol_orc_vec_mapwork_part.q          |    3 +
 .../schema_evol_orc_vec_mapwork_table.q         |    7 +-
 .../schema_evol_text_fetchwork_table.q          |   56 -
 .../schema_evol_text_mapwork_table.q            |   56 -
 .../schema_evol_text_nonvec_fetchwork_part.q    |   98 -
 .../schema_evol_text_nonvec_fetchwork_table.q   |   67 -
 .../schema_evol_text_nonvec_mapwork_part.q      |  828 ++-
 ..._evol_text_nonvec_mapwork_part_all_complex.q |  159 +
 ...vol_text_nonvec_mapwork_part_all_primitive.q |  509 ++
 .../schema_evol_text_nonvec_mapwork_table.q     |  822 ++-
 .../schema_evol_text_vec_mapwork_part.q         |  827 +++
 ...ema_evol_text_vec_mapwork_part_all_complex.q |  164 +
 ...a_evol_text_vec_mapwork_part_all_primitive.q |  514 ++
 .../schema_evol_text_vec_mapwork_table.q        |  826 +++
 .../schema_evol_text_vecrow_mapwork_part.q      |  827 +++
 ..._evol_text_vecrow_mapwork_part_all_complex.q |  165 +
 ...vol_text_vecrow_mapwork_part_all_primitive.q |  514 ++
 .../schema_evol_text_vecrow_mapwork_table.q     |  826 +++
 .../clientpositive/tez_schema_evolution.q       |    1 +
 .../avro_schema_evolution_native.q.out          |  206 +
 .../results/clientpositive/bucket_groupby.q.out |  308 +-
 .../clientpositive/groupby_sort_10.q.out        |    8 +-
 .../schema_evol_text_fetchwork_table.q.out      |  298 --
 .../schema_evol_text_mapwork_table.q.out        |  298 --
 ...schema_evol_text_nonvec_fetchwork_part.q.out |  642 ---
 ...chema_evol_text_nonvec_fetchwork_table.q.out |  297 --
 .../schema_evol_text_nonvec_mapwork_part.q.out  | 4909 ++++++++++++++++--
 ...l_text_nonvec_mapwork_part_all_complex.q.out |  726 +++
 ...text_nonvec_mapwork_part_all_primitive.q.out | 3038 +++++++++++
 .../schema_evol_text_nonvec_mapwork_table.q.out | 4376 +++++++++++++++-
 .../schema_evol_text_vec_mapwork_part.q.out     | 4479 ++++++++++++++++
 ...evol_text_vec_mapwork_part_all_complex.q.out |  730 +++
 ...ol_text_vec_mapwork_part_all_primitive.q.out | 3058 +++++++++++
 .../schema_evol_text_vec_mapwork_table.q.out    | 4221 +++++++++++++++
 .../schema_evol_text_vecrow_mapwork_part.q.out  | 4479 ++++++++++++++++
 ...l_text_vecrow_mapwork_part_all_complex.q.out |  732 +++
 ...text_vecrow_mapwork_part_all_primitive.q.out | 3058 +++++++++++
 .../schema_evol_text_vecrow_mapwork_table.q.out | 4221 +++++++++++++++
 .../tez/schema_evol_text_fetchwork_table.q.out  |  298 --
 .../tez/schema_evol_text_mapwork_table.q.out    |  298 --
 ...schema_evol_text_nonvec_fetchwork_part.q.out |  642 ---
 ...chema_evol_text_nonvec_fetchwork_table.q.out |  297 --
 .../schema_evol_text_nonvec_mapwork_part.q.out  | 4453 ++++++++++++++--
 ...l_text_nonvec_mapwork_part_all_complex.q.out |  669 +++
 ...text_nonvec_mapwork_part_all_primitive.q.out | 2734 ++++++++++
 .../schema_evol_text_nonvec_mapwork_table.q.out | 3920 +++++++++++++-
 .../tez/schema_evol_text_vec_mapwork_part.q.out | 3999 ++++++++++++++
 ...evol_text_vec_mapwork_part_all_complex.q.out |  673 +++
 ...ol_text_vec_mapwork_part_all_primitive.q.out | 2738 ++++++++++
 .../schema_evol_text_vec_mapwork_table.q.out    | 3741 +++++++++++++
 .../schema_evol_text_vecrow_mapwork_part.q.out  | 3999 ++++++++++++++
 ...l_text_vecrow_mapwork_part_all_complex.q.out |  675 +++
 ...text_vecrow_mapwork_part_all_primitive.q.out | 2738 ++++++++++
 .../schema_evol_text_vecrow_mapwork_table.q.out | 3741 +++++++++++++
 .../vector_orc_string_reader_empty_dict.q.out   |   62 +
 .../tez/vector_partition_diff_num_cols.q.out    |    1 +
 .../tez/vector_tablesample_rows.q.out           |  307 ++
 .../vector_partition_diff_num_cols.q.out        |    1 +
 .../vector_tablesample_rows.q.out               |    2 -
 .../fast/BinarySortableDeserializeRead.java     |  806 +--
 .../hive/serde2/fast/DeserializeRead.java       |  379 +-
 .../lazy/fast/LazySimpleDeserializeRead.java    |  704 +--
 .../fast/LazyBinaryDeserializeRead.java         |  944 +---
 .../apache/hadoop/hive/serde2/VerifyFast.java   |   75 +-
 130 files changed, 82172 insertions(+), 9858 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
----------------------------------------------------------------------
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 2814353..caadf2a 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -2481,6 +2481,15 @@ public class HiveConf extends Configuration {
         "This flag should be set to true to enable the new vectorization\n" +
         "of queries using ReduceSink.\ni" +
         "The default value is true."),
+    HIVE_VECTORIZATION_USE_VECTORIZED_INPUT_FILE_FORMAT("hive.vectorized.use.vectorized.input.format", true,
+        "This flag should be set to true to enable vectorizing with vectorized input file format capable SerDe.\n" +
+        "The default value is true."),
+    HIVE_VECTORIZATION_USE_VECTOR_DESERIALIZE("hive.vectorized.use.vector.serde.deserialize", false,
+        "This flag should be set to true to enable vectorizing rows using vector deserialize.\n" +
+        "The default value is false."),
+    HIVE_VECTORIZATION_USE_ROW_DESERIALIZE("hive.vectorized.use.row.serde.deserialize", false,
+        "This flag should be set to true to enable vectorizing using row deserialize.\n" +
+        "The default value is false."),
     HIVE_TYPE_CHECK_ON_INSERT("hive.typecheck.on.insert", true, "This property has been extended to control "
         + "whether to check, convert, and normalize partition value to conform to its column type in "
         + "partition operations including but not limited to insert, such as alter, describe etc."),

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct1_a.txt
----------------------------------------------------------------------
diff --git a/data/files/struct1_a.txt b/data/files/struct1_a.txt
new file mode 100644
index 0000000..b36846e
--- /dev/null
+++ b/data/files/struct1_a.txt
@@ -0,0 +1,4 @@
+1|true,200,72909,3244222,-99999999999,-29.0764,470614135,470614135,dynamic reptile  ,dynamic reptile  ,0004-09-22 18:26:29.519542222,2007-02-09,binary|original
+2|0,100,483777,14,-23866739993,-3651.672121,46114.284799488,46114.284799488,  baffling    ,  baffling    ,2007-02-09 05:17:29.368756876,0004-09-22,binary|original
+3|false,72,3244222,-93222,30.774,-66475.561431,-66475.561431,0.561431,1,1,6229-06-28 02:54:28.970117179,5966-07-09,binary|original
+4|1,-90,754072151,3289094,46114.284799488,9250340.75,9250340.75,9250340.75,junkyard,junkyard,2002-05-10 05:29:48.990818073,1815-05-06,binary|original

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct1_b.txt
----------------------------------------------------------------------
diff --git a/data/files/struct1_b.txt b/data/files/struct1_b.txt
new file mode 100644
index 0000000..1887c68
--- /dev/null
+++ b/data/files/struct1_b.txt
@@ -0,0 +1 @@
+5|true,400,44388,-100,953967041.,62.079153,718.78,1,verdict,verdict,timestamp,date,binary|new

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct1_c.txt
----------------------------------------------------------------------
diff --git a/data/files/struct1_c.txt b/data/files/struct1_c.txt
new file mode 100644
index 0000000..5d482c8
--- /dev/null
+++ b/data/files/struct1_c.txt
@@ -0,0 +1 @@
+6|false,-67,833,63993,1255178165.77663,905070.974,-4314.7918,-1240033819,trial,trial,2016-03-0703:02:22.0,2016-03-07,binary|new

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct2_a.txt
----------------------------------------------------------------------
diff --git a/data/files/struct2_a.txt b/data/files/struct2_a.txt
new file mode 100644
index 0000000..7fdfef1
--- /dev/null
+++ b/data/files/struct2_a.txt
@@ -0,0 +1,2 @@
+3|new|true,200,72909,3244222,-99999999999,-29.0764,470614135,470614135,dynamic reptile  ,dynamic reptile  ,0004-09-22 18:26:29.519542222,2007-02-09,binary
+4|new|0,100,483777,14,-23866739993,-3651.672121,46114.284799488,46114.284799488,  baffling    ,  baffling    ,2007-02-09 05:17:29.368756876,0004-09-22,binary

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct2_b.txt
----------------------------------------------------------------------
diff --git a/data/files/struct2_b.txt b/data/files/struct2_b.txt
new file mode 100644
index 0000000..a814af3
--- /dev/null
+++ b/data/files/struct2_b.txt
@@ -0,0 +1,2 @@
+5|new|false,72,3244222,-93222,30.774,-66475.561431,-66475.561431,0.561431,1,1,6229-06-28 02:54:28.970117179,5966-07-09,binary
+6|new|1,-90,754072151,3289094,46114.284799488,9250340.75,9250340.75,9250340.75,junkyard,junkyard,2002-05-10 05:29:48.990818073,1815-05-06,binary

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct2_c.txt
----------------------------------------------------------------------
diff --git a/data/files/struct2_c.txt b/data/files/struct2_c.txt
new file mode 100644
index 0000000..2c9c1bb
--- /dev/null
+++ b/data/files/struct2_c.txt
@@ -0,0 +1 @@
+7|new|true,400,44388,-100,953967041.,62.079153,718.78,1,verdict,verdict,timestamp,date,binary
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct2_d.txt
----------------------------------------------------------------------
diff --git a/data/files/struct2_d.txt b/data/files/struct2_d.txt
new file mode 100644
index 0000000..3c7801e
--- /dev/null
+++ b/data/files/struct2_d.txt
@@ -0,0 +1 @@
+8|new|false,-67,833,63993,1255178165.77663,905070.974,-4314.7918,-1240033819,trial,trial,2016-03-0703:02:22.0,2016-03-07,binary
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct3_a.txt
----------------------------------------------------------------------
diff --git a/data/files/struct3_a.txt b/data/files/struct3_a.txt
new file mode 100644
index 0000000..19dbd7f
--- /dev/null
+++ b/data/files/struct3_a.txt
@@ -0,0 +1,2 @@
+1|true,200,72909,3244222,-99999999999|original
+2|0,100,483777,14,-23866739993|original
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct3_b.txt
----------------------------------------------------------------------
diff --git a/data/files/struct3_b.txt b/data/files/struct3_b.txt
new file mode 100644
index 0000000..030e0c0
--- /dev/null
+++ b/data/files/struct3_b.txt
@@ -0,0 +1 @@
+3|true,400,44388,-100,953967041.,62.079153,718.78,1,verdict,verdict,timestamp,date,binary|new
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct3_c.txt
----------------------------------------------------------------------
diff --git a/data/files/struct3_c.txt b/data/files/struct3_c.txt
new file mode 100644
index 0000000..236694b
--- /dev/null
+++ b/data/files/struct3_c.txt
@@ -0,0 +1 @@
+4|false,-67,833,63993,1255178165.77663,905070.974,-4314.7918,-1240033819,trial,trial,2016-03-0703:02:22.0,2016-03-07,binary|new
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct4_a.txt
----------------------------------------------------------------------
diff --git a/data/files/struct4_a.txt b/data/files/struct4_a.txt
new file mode 100644
index 0000000..ecf832f
--- /dev/null
+++ b/data/files/struct4_a.txt
@@ -0,0 +1,2 @@
+1|original|true,200,72909,3244222,-99999999999
+2|original|0,100,483777,14,-23866739993
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct4_b.txt
----------------------------------------------------------------------
diff --git a/data/files/struct4_b.txt b/data/files/struct4_b.txt
new file mode 100644
index 0000000..701253c
--- /dev/null
+++ b/data/files/struct4_b.txt
@@ -0,0 +1 @@
+3|new|true,400,44388,-100,953967041.,62.079153,718.78,1,verdict,verdict,timestamp,date,binary
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/data/files/struct4_c.txt
----------------------------------------------------------------------
diff --git a/data/files/struct4_c.txt b/data/files/struct4_c.txt
new file mode 100644
index 0000000..c56e002
--- /dev/null
+++ b/data/files/struct4_c.txt
@@ -0,0 +1 @@
+4|new|false,-67,833,63993,1255178165.77663,905070.974,-4314.7918,-1240033819,trial,trial,2016-03-0703:02:22.0,2016-03-07,binary
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index 0ef3161..346a38d 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -186,22 +186,28 @@ minitez.query.files.shared=acid_globallimit.q,\
   ptf_streaming.q,\
   sample1.q,\
   schema_evol_stats.q,\
-  schema_evol_text_nonvec_mapwork_table.q,\
-  schema_evol_text_nonvec_fetchwork_table.q,\
-  schema_evol_orc_nonvec_fetchwork_part.q,\
-  schema_evol_orc_nonvec_mapwork_part.q,\
-  schema_evol_text_nonvec_fetchwork_part.q,\
-  schema_evol_text_nonvec_mapwork_part.q,\
   schema_evol_orc_acid_mapwork_part.q,\
   schema_evol_orc_acid_mapwork_table.q,\
-  schema_evol_orc_acidvec_mapwork_table.q,\
   schema_evol_orc_acidvec_mapwork_part.q,\
+  schema_evol_orc_acidvec_mapwork_table.q,\
+  schema_evol_orc_nonvec_fetchwork_part.q,\
+  schema_evol_orc_nonvec_fetchwork_table.q,\
+  schema_evol_orc_nonvec_mapwork_part.q,\
+  schema_evol_orc_nonvec_mapwork_table.q,\
   schema_evol_orc_vec_mapwork_part.q,\
-  schema_evol_text_fetchwork_table.q,\
-  schema_evol_text_mapwork_table.q,\
   schema_evol_orc_vec_mapwork_table.q,\
-  schema_evol_orc_nonvec_mapwork_table.q,\
-  schema_evol_orc_nonvec_fetchwork_table.q,\
+  schema_evol_text_nonvec_mapwork_part.q,\
+  schema_evol_text_nonvec_mapwork_part_all_complex.q,\
+  schema_evol_text_nonvec_mapwork_part_all_primitive.q,\
+  schema_evol_text_nonvec_mapwork_table.q,\
+  schema_evol_text_vec_mapwork_part.q,\
+  schema_evol_text_vec_mapwork_part_all_complex.q,\
+  schema_evol_text_vec_mapwork_part_all_primitive.q,\
+  schema_evol_text_vec_mapwork_table.q,\
+  schema_evol_text_vecrow_mapwork_part.q,\
+  schema_evol_text_vecrow_mapwork_part_all_complex.q,\
+  schema_evol_text_vecrow_mapwork_part_all_primitive.q,\
+  schema_evol_text_vecrow_mapwork_table.q,\
   selectDistinctStar.q,\
   script_env_var1.q,\
   script_env_var2.q,\

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapInputFormat.java
----------------------------------------------------------------------
diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapInputFormat.java b/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapInputFormat.java
index 9fb79a5..298f788 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapInputFormat.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/io/api/impl/LlapInputFormat.java
@@ -102,7 +102,7 @@ public class LlapInputFormat implements InputFormat<NullWritable, VectorizedRowB
           sourceInputFormat.getRecordReader(split, job, reporter);
       return rr;
     }
-    boolean isVectorMode = Utilities.isVectorMode(job);
+    boolean isVectorMode = Utilities.getUseVectorizedInputFileFormat(job);
     if (!isVectorMode) {
       LlapIoImpl.LOG.error("No LLAP IO in non-vectorized mode");
       throw new UnsupportedOperationException("No LLAP IO in non-vectorized mode");

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractMapOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractMapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractMapOperator.java
new file mode 100644
index 0000000..5c3012b
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/AbstractMapOperator.java
@@ -0,0 +1,178 @@
+/**
+ * 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.ql.exec;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.ql.CompilationOpContext;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.MapWork;
+import org.apache.hadoop.hive.serde2.Deserializer;
+import org.apache.hadoop.hive.serde2.SerDeException;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.Writable;
+
+
+/**
+ * Abstract Map operator. Common code of MapOperator and VectorMapOperator.
+ **/
+@SuppressWarnings("deprecation")
+public abstract class AbstractMapOperator extends Operator<MapWork>
+    implements Serializable, Cloneable {
+
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * Initialization call sequence:
+   *
+   *   (Operator)                     Operator.setConf(MapWork conf);
+   *   (Operator)                     Operator.initialize(
+   *                                      Configuration hconf, ObjectInspector[] inputOIs);
+   *
+   *   ([Vector]MapOperator)          @Override setChildren(Configuration hconf)
+   *
+   *   (Operator)                     Operator.passExecContext(ExecMapperContext execContext)
+   *   (Operator)                     Operator.initializeLocalWork(Configuration hconf)
+   *
+   *   (AbstractMapOperator)          initializeMapOperator(Configuration hconf)
+   *
+   * [ (AbstractMapOperator)          initializeContexts() ]   // exec.tez.MapRecordProcessor only.
+   *
+   *   (Operator)                     Operator.setReporter(Reporter rep)
+   *
+   */
+
+  /**
+   * Counter.
+   *
+   */
+  public static enum Counter {
+    DESERIALIZE_ERRORS,
+    RECORDS_IN
+  }
+
+  protected final transient LongWritable deserialize_error_count = new LongWritable();
+  protected final transient LongWritable recordCounter = new LongWritable();
+  protected transient long numRows = 0;
+
+  private final Map<Integer, DummyStoreOperator> connectedOperators
+  = new TreeMap<Integer, DummyStoreOperator>();
+
+  private transient final Map<String, Path> normalizedPaths = new HashMap<String, Path>();
+
+  private Path normalizePath(String onefile, boolean schemaless) {
+    //creating Path is expensive, so cache the corresponding
+    //Path object in normalizedPaths
+    Path path = normalizedPaths.get(onefile);
+    if (path == null) {
+      path = new Path(onefile);
+      if (schemaless && path.toUri().getScheme() != null) {
+        path = new Path(path.toUri().getPath());
+      }
+      normalizedPaths.put(onefile, path);
+    }
+    return path;
+  }
+
+  protected String getNominalPath(Path fpath) {
+    String nominal = null;
+    boolean schemaless = fpath.toUri().getScheme() == null;
+    for (String onefile : conf.getPathToAliases().keySet()) {
+      Path onepath = normalizePath(onefile, schemaless);
+      Path curfpath = fpath;
+      if(!schemaless && onepath.toUri().getScheme() == null) {
+        curfpath = new Path(fpath.toUri().getPath());
+      }
+      // check for the operators who will process rows coming to this Map Operator
+      if (onepath.toUri().relativize(curfpath.toUri()).equals(curfpath.toUri())) {
+        // not from this
+        continue;
+      }
+      if (nominal != null) {
+        throw new IllegalStateException("Ambiguous input path " + fpath);
+      }
+      nominal = onefile;
+    }
+    if (nominal == null) {
+      throw new IllegalStateException("Invalid input path " + fpath);
+    }
+    return nominal;
+  }
+
+  public abstract void initEmptyInputChildren(List<Operator<?>> children, Configuration hconf)
+      throws SerDeException, Exception;
+
+
+  /** Kryo ctor. */
+  protected AbstractMapOperator() {
+    super();
+  }
+
+  public AbstractMapOperator(CompilationOpContext ctx) {
+    super(ctx);
+  }
+
+  public abstract void setChildren(Configuration hconf) throws Exception;
+
+
+  public void initializeMapOperator(Configuration hconf) throws HiveException {
+    // set that parent initialization is done and call initialize on children
+    state = State.INIT;
+
+    statsMap.put(Counter.DESERIALIZE_ERRORS.toString(), deserialize_error_count);
+
+    numRows = 0;
+
+    String context = hconf.get(Operator.CONTEXT_NAME_KEY, "");
+    if (context != null && !context.isEmpty()) {
+      context = "_" + context.replace(" ","_");
+    }
+    statsMap.put(Counter.RECORDS_IN + context, recordCounter);
+  }
+
+  public abstract void initializeContexts() throws HiveException;
+
+  public abstract Deserializer getCurrentDeserializer();
+
+  public abstract void process(Writable value) throws HiveException;
+
+  @Override
+  public void closeOp(boolean abort) throws HiveException {
+    recordCounter.set(numRows);
+    super.closeOp(abort);
+  }
+
+  public void clearConnectedOperators() {
+    connectedOperators.clear();
+  }
+
+  public void setConnectedOperators(int tag, DummyStoreOperator dummyOp) {
+    connectedOperators.put(tag, dummyOp);
+  }
+
+  public Map<Integer, DummyStoreOperator> getConnectedOperators() {
+    return connectedOperators;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
index b1f9958..afe5ee2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
@@ -72,25 +72,11 @@ import com.google.common.annotations.VisibleForTesting;
  * Writable data structure from a Table (instead of a Hive Object).
  **/
 @SuppressWarnings("deprecation")
-public class MapOperator extends Operator<MapWork> implements Serializable, Cloneable {
+public class MapOperator extends AbstractMapOperator {
 
   private static final long serialVersionUID = 1L;
 
-  /**
-   * Counter.
-   *
-   */
-  public static enum Counter {
-    DESERIALIZE_ERRORS,
-    RECORDS_IN
-  }
-
-  private final transient LongWritable deserialize_error_count = new LongWritable();
-  private final transient LongWritable recordCounter = new LongWritable();
-  protected transient long numRows = 0;
   protected transient long cntr = 1;
-  private final Map<Integer, DummyStoreOperator> connectedOperators
-    = new TreeMap<Integer, DummyStoreOperator>();
   protected transient long logEveryNRows = 0;
 
   // input path --> {operator --> context}
@@ -102,7 +88,6 @@ public class MapOperator extends Operator<MapWork> implements Serializable, Clon
 
   // context for current input file
   protected transient MapOpCtx[] currentCtxs;
-  private transient final Map<String, Path> normalizedPaths = new HashMap<String, Path>();
 
   protected static class MapOpCtx {
 
@@ -433,31 +418,6 @@ public class MapOperator extends Operator<MapWork> implements Serializable, Clon
     }
   }
 
-  private String getNominalPath(Path fpath) {
-    String nominal = null;
-    boolean schemaless = fpath.toUri().getScheme() == null;
-    for (String onefile : conf.getPathToAliases().keySet()) {
-      Path onepath = normalizePath(onefile, schemaless);
-      Path curfpath = fpath;
-      if(!schemaless && onepath.toUri().getScheme() == null) {
-        curfpath = new Path(fpath.toUri().getPath());
-      }
-      // check for the operators who will process rows coming to this Map Operator
-      if (onepath.toUri().relativize(curfpath.toUri()).equals(curfpath.toUri())) {
-        // not from this
-        continue;
-      }
-      if (nominal != null) {
-        throw new IllegalStateException("Ambiguous input path " + fpath);
-      }
-      nominal = onefile;
-    }
-    if (nominal == null) {
-      throw new IllegalStateException("Invalid input path " + fpath);
-    }
-    return nominal;
-  }
-
   /** Kryo ctor. */
   protected MapOperator() {
     super();
@@ -473,32 +433,17 @@ public class MapOperator extends Operator<MapWork> implements Serializable, Clon
   }
 
   public void initializeMapOperator(Configuration hconf) throws HiveException {
-    // set that parent initialization is done and call initialize on children
-    state = State.INIT;
-    statsMap.put(Counter.DESERIALIZE_ERRORS.toString(), deserialize_error_count);
+    super.initializeMapOperator(hconf);
 
-    numRows = 0;
     cntr = 1;
     logEveryNRows = HiveConf.getLongVar(hconf, HiveConf.ConfVars.HIVE_LOG_N_RECORDS);
 
-    String context = hconf.get(Operator.CONTEXT_NAME_KEY, "");
-    if (context != null && !context.isEmpty()) {
-      context = "_" + context.replace(" ","_");
-    }
-    statsMap.put(Counter.RECORDS_IN + context, recordCounter);
-
     for (Entry<Operator<?>, StructObjectInspector> entry : childrenOpToOI.entrySet()) {
       Operator<?> child = entry.getKey();
       child.initialize(hconf, new ObjectInspector[] {entry.getValue()});
     }
   }
 
-  @Override
-  public void closeOp(boolean abort) throws HiveException {
-    recordCounter.set(numRows);
-    super.closeOp(abort);
-  }
-
   // Find context for current input file
   @Override
   public void cleanUpInputFileChangedOp() throws HiveException {
@@ -528,20 +473,6 @@ public class MapOperator extends Operator<MapWork> implements Serializable, Clon
     currentCtxs = contexts.values().toArray(new MapOpCtx[contexts.size()]);
   }
 
-  private Path normalizePath(String onefile, boolean schemaless) {
-    //creating Path is expensive, so cache the corresponding
-    //Path object in normalizedPaths
-    Path path = normalizedPaths.get(onefile);
-    if (path == null) {
-      path = new Path(onefile);
-      if (schemaless && path.toUri().getScheme() != null) {
-        path = new Path(path.toUri().getPath());
-      }
-      normalizedPaths.put(onefile, path);
-    }
-    return path;
-  }
-
   public void process(Writable value) throws HiveException {
     // A mapper can span multiple files/partitions.
     // The serializers need to be reset if the input file changed
@@ -698,17 +629,4 @@ public class MapOperator extends Operator<MapWork> implements Serializable, Clon
 
     return currentCtxs[0].deserializer;
   }
-
-  public void clearConnectedOperators() {
-    connectedOperators.clear();
-  }
-
-  public void setConnectedOperators(int tag, DummyStoreOperator dummyOp) {
-    connectedOperators.put(tag, dummyOp);
-  }
-
-  public Map<Integer, DummyStoreOperator> getConnectedOperators() {
-    return connectedOperators;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
index ab0635e..449bef8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java
@@ -216,6 +216,7 @@ public final class Utilities {
   public static final String MAPRED_REDUCER_CLASS = "mapred.reducer.class";
   public static final String HIVE_ADDED_JARS = "hive.added.jars";
   public static final String VECTOR_MODE = "VECTOR_MODE";
+  public static final String USE_VECTORIZED_INPUT_FILE_FORMAT = "USE_VECTORIZED_INPUT_FILE_FORMAT";
   public static String MAPNAME = "Map ";
   public static String REDUCENAME = "Reducer ";
 
@@ -3254,24 +3255,39 @@ public final class Utilities {
 
   /**
    * Returns true if a plan is both configured for vectorized execution
-   * and vectorization is allowed. The plan may be configured for vectorization
+   * and the node is vectorized and the Input File Format is marked VectorizedInputFileFormat.
+   *
+   * The plan may be configured for vectorization
    * but vectorization disallowed eg. for FetchOperator execution.
    */
-  public static boolean isVectorMode(Configuration conf) {
+  public static boolean getUseVectorizedInputFileFormat(Configuration conf) {
     if (conf.get(VECTOR_MODE) != null) {
       // this code path is necessary, because with HS2 and client
       // side split generation we end up not finding the map work.
       // This is because of thread local madness (tez split
       // generation is multi-threaded - HS2 plan cache uses thread
       // locals).
-      return conf.getBoolean(VECTOR_MODE, false);
+      return
+          conf.getBoolean(VECTOR_MODE, false) &&
+          conf.getBoolean(USE_VECTORIZED_INPUT_FILE_FORMAT, false);
     } else {
-      return HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED)
-        && Utilities.getPlanPath(conf) != null
-        && Utilities.getMapWork(conf).getVectorMode();
+      if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED) &&
+        Utilities.getPlanPath(conf) != null) {
+        MapWork mapWork = Utilities.getMapWork(conf);
+        return (mapWork.getVectorMode() && mapWork.getUseVectorizedInputFileFormat());
+      } else {
+        return false;
+      }
     }
   }
 
+
+  public static boolean getUseVectorizedInputFileFormat(Configuration conf, MapWork mapWork) {
+    return HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED) &&
+        mapWork.getVectorMode() &&
+        mapWork.getUseVectorizedInputFileFormat();
+  }
+
   /**
    * @param conf
    * @return the configured VectorizedRowBatchCtx for a MapWork task.
@@ -3288,11 +3304,6 @@ public final class Utilities {
     return result;
   }
 
-  public static boolean isVectorMode(Configuration conf, MapWork mapWork) {
-    return HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_VECTORIZATION_ENABLED)
-        && mapWork.getVectorMode();
-  }
-
   public static void clearWorkMapForConf(Configuration conf) {
     // Remove cached query plans for the current query only
     Path mapPath = getPlanPath(conf, MAP_PLAN_NAME);

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java
index c34dd1f..f90a788 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecMapper.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.CompilationOpContext;
+import org.apache.hadoop.hive.ql.exec.AbstractMapOperator;
 import org.apache.hadoop.hive.ql.exec.MapOperator;
 import org.apache.hadoop.hive.ql.exec.MapredContext;
 import org.apache.hadoop.hive.ql.exec.Operator;
@@ -59,7 +60,7 @@ import org.apache.hadoop.util.StringUtils;
  */
 public class ExecMapper extends MapReduceBase implements Mapper {
 
-  private MapOperator mo;
+  private AbstractMapOperator mo;
   private OutputCollector oc;
   private JobConf jc;
   private boolean abort = false;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkMapRecordHandler.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkMapRecordHandler.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkMapRecordHandler.java
index d8fe35f..48dfedc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkMapRecordHandler.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/spark/SparkMapRecordHandler.java
@@ -25,6 +25,7 @@ import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hive.ql.CompilationOpContext;
+import org.apache.hadoop.hive.ql.exec.AbstractMapOperator;
 import org.apache.hadoop.hive.ql.exec.MapOperator;
 import org.apache.hadoop.hive.ql.exec.MapredContext;
 import org.apache.hadoop.hive.ql.exec.Operator;
@@ -55,7 +56,7 @@ import org.apache.hadoop.mapred.Reporter;
  */
 public class SparkMapRecordHandler extends SparkRecordHandler {
   private static final Logger LOG = LoggerFactory.getLogger(SparkMapRecordHandler.class);
-  private MapOperator mo;
+  private AbstractMapOperator mo;
   private MapredLocalWork localWork = null;
   private boolean isLogInfoEnabled = false;
   private ExecMapperContext execContext;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java
index 79da860..a1e4e6c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/DagUtils.java
@@ -625,9 +625,10 @@ public class DagUtils {
       // generation we end up not finding the map work. This is
       // because of thread local madness (tez split generation is
       // multi-threaded - HS2 plan cache uses thread locals). Setting
-      // VECTOR_MODE causes the split gen code to use the conf instead
+      // VECTOR_MODE/USE_VECTORIZED_INPUT_FILE_FORMAT causes the split gen code to use the conf instead
       // of the map work.
       conf.setBoolean(Utilities.VECTOR_MODE, mapWork.getVectorMode());
+      conf.setBoolean(Utilities.USE_VECTORIZED_INPUT_FILE_FORMAT, mapWork.getUseVectorizedInputFileFormat());
 
       dataSource = MRInputHelpers.configureMRInputWithLegacySplitGeneration(conf, new Path(tezDir,
           "split_" + mapWork.getName().replaceAll(" ", "_")), true);

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java
index 0584ad8..9a9f43a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordProcessor.java
@@ -33,6 +33,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.exec.AbstractMapOperator;
 import org.apache.hadoop.hive.llap.io.api.LlapProxy;
 import org.apache.hadoop.hive.ql.CompilationOpContext;
 import org.apache.hadoop.hive.ql.exec.DummyStoreOperator;
@@ -75,8 +76,8 @@ public class MapRecordProcessor extends RecordProcessor {
   public static final Logger l4j = LoggerFactory.getLogger(MapRecordProcessor.class);
   protected static final String MAP_PLAN_KEY = "__MAP_PLAN__";
 
-  private MapOperator mapOp;
-  private final List<MapOperator> mergeMapOpList = new ArrayList<MapOperator>();
+  private AbstractMapOperator mapOp;
+  private final List<AbstractMapOperator> mergeMapOpList = new ArrayList<AbstractMapOperator>();
   private MapRecordSource[] sources;
   private final Map<String, MultiMRInput> multiMRInputMap = new HashMap<String, MultiMRInput>();
   private int position;
@@ -183,7 +184,7 @@ public class MapRecordProcessor extends RecordProcessor {
 
       boolean fromCache = false;
       if (mergeWorkList != null) {
-        MapOperator mergeMapOp = null;
+        AbstractMapOperator mergeMapOp = null;
         for (BaseWork mergeWork : mergeWorkList) {
           MapWork mergeMapWork = (MapWork) mergeWork;
           if (mergeMapWork.getVectorMode()) {
@@ -261,7 +262,7 @@ public class MapRecordProcessor extends RecordProcessor {
       initializeMapRecordSources();
       mapOp.initializeMapOperator(jconf);
       if ((mergeMapOpList != null) && mergeMapOpList.isEmpty() == false) {
-        for (MapOperator mergeMapOp : mergeMapOpList) {
+        for (AbstractMapOperator mergeMapOp : mergeMapOpList) {
           jconf.set(Utilities.INPUT_NAME, mergeMapOp.getConf().getName());
           mergeMapOp.initializeMapOperator(jconf);
         }
@@ -309,7 +310,7 @@ public class MapRecordProcessor extends RecordProcessor {
       reader = legacyMRInput.getReader();
     }
     sources[position].init(jconf, mapOp, reader);
-    for (MapOperator mapOp : mergeMapOpList) {
+    for (AbstractMapOperator mapOp : mergeMapOpList) {
       int tag = mapOp.getConf().getTag();
       sources[tag] = new MapRecordSource();
       String inputName = mapOp.getConf().getName();
@@ -326,7 +327,7 @@ public class MapRecordProcessor extends RecordProcessor {
 
   @SuppressWarnings("deprecation")
   private KeyValueReader getKeyValueReader(Collection<KeyValueReader> keyValueReaders,
-      MapOperator mapOp)
+      AbstractMapOperator mapOp)
     throws Exception {
     List<KeyValueReader> kvReaderList = new ArrayList<KeyValueReader>(keyValueReaders);
     // this sets up the map operator contexts correctly
@@ -394,7 +395,7 @@ public class MapRecordProcessor extends RecordProcessor {
       }
       mapOp.close(abort);
       if (mergeMapOpList.isEmpty() == false) {
-        for (MapOperator mergeMapOp : mergeMapOpList) {
+        for (AbstractMapOperator mergeMapOp : mergeMapOpList) {
           mergeMapOp.close(abort);
         }
       }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java
index b53c933..add7d08 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/MapRecordSource.java
@@ -21,7 +21,7 @@ package org.apache.hadoop.hive.ql.exec.tez;
 import java.io.IOException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.hadoop.hive.ql.exec.MapOperator;
+import org.apache.hadoop.hive.ql.exec.AbstractMapOperator;
 import org.apache.hadoop.hive.ql.exec.mr.ExecMapperContext;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.io.Writable;
@@ -39,11 +39,11 @@ public class MapRecordSource implements RecordSource {
 
   public static final Logger LOG = LoggerFactory.getLogger(MapRecordSource.class);
   private ExecMapperContext execContext = null;
-  private MapOperator mapOp = null;
+  private AbstractMapOperator mapOp = null;
   private KeyValueReader reader = null;
   private final boolean grouped = false;
 
-  void init(JobConf jconf, MapOperator mapOp, KeyValueReader reader) throws IOException {
+  void init(JobConf jconf, AbstractMapOperator mapOp, KeyValueReader reader) throws IOException {
     execContext = mapOp.getExecContext();
     this.mapOp = mapOp;
     this.reader = reader;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java
index 1f75d07..e966ff1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/ReduceRecordSource.java
@@ -413,7 +413,7 @@ public class ReduceRecordSource implements RecordSource {
     //     VectorizedBatchUtil.displayBytes(keyBytes, 0, keyLength));
 
     keyBinarySortableDeserializeToRow.setBytes(keyBytes, 0, keyLength);
-    keyBinarySortableDeserializeToRow.deserializeByValue(batch, 0);
+    keyBinarySortableDeserializeToRow.deserialize(batch, 0);
     for(int i = 0; i < firstValueColumnOffset; i++) {
       VectorizedBatchUtil.setRepeatingColumn(batch, i);
     }
@@ -431,7 +431,7 @@ public class ReduceRecordSource implements RecordSource {
           //     VectorizedBatchUtil.displayBytes(valueBytes, 0, valueLength));
 
           valueLazyBinaryDeserializeToRow.setBytes(valueBytes, 0, valueLength);
-          valueLazyBinaryDeserializeToRow.deserializeByValue(batch, rowIdx);
+          valueLazyBinaryDeserializeToRow.deserialize(batch, rowIdx);
         }
         rowIdx++;
         if (rowIdx >= BATCH_SIZE) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAppMasterEventOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAppMasterEventOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAppMasterEventOperator.java
index 1951569..2bf6ac5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAppMasterEventOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorAppMasterEventOperator.java
@@ -45,7 +45,7 @@ public class VectorAppMasterEventOperator extends AppMasterEventOperator {
 
   private transient boolean firstBatch;
 
-  private transient VectorExtractRowDynBatch vectorExtractRowDynBatch;
+  private transient VectorExtractRow vectorExtractRow;
 
   protected transient Object[] singleRow;
 
@@ -88,16 +88,14 @@ public class VectorAppMasterEventOperator extends AppMasterEventOperator {
 
     VectorizedRowBatch batch = (VectorizedRowBatch) data;
     if (firstBatch) {
-      vectorExtractRowDynBatch = new VectorExtractRowDynBatch();
-      vectorExtractRowDynBatch.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
+      vectorExtractRow = new VectorExtractRow();
+      vectorExtractRow.init((StructObjectInspector) inputObjInspectors[0], vContext.getProjectedColumns());
 
-      singleRow = new Object[vectorExtractRowDynBatch.getCount()];
+      singleRow = new Object[vectorExtractRow.getCount()];
 
       firstBatch = false;
     }
 
-    vectorExtractRowDynBatch.setBatchOnEntry(batch);
-
     ObjectInspector rowInspector = inputObjInspectors[0];
     try {
       Writable writableRow;
@@ -105,7 +103,7 @@ public class VectorAppMasterEventOperator extends AppMasterEventOperator {
         int selected[] = batch.selected;
         for (int logical = 0 ; logical < batch.size; logical++) {
           int batchIndex = selected[logical];
-          vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+          vectorExtractRow.extractRow(batch, batchIndex, singleRow);
           writableRow = serializer.serialize(singleRow, rowInspector);
           writableRow.write(buffer);
           if (buffer.getLength() > MAX_SIZE) {
@@ -117,7 +115,7 @@ public class VectorAppMasterEventOperator extends AppMasterEventOperator {
         }
       } else {
         for (int batchIndex = 0 ; batchIndex < batch.size; batchIndex++) {
-          vectorExtractRowDynBatch.extractRow(batchIndex, singleRow);
+          vectorExtractRow.extractRow(batch, batchIndex, singleRow);
           writableRow = serializer.serialize(singleRow, rowInspector);
           writableRow.write(buffer);
           if (buffer.getLength() > MAX_SIZE) {
@@ -133,7 +131,5 @@ public class VectorAppMasterEventOperator extends AppMasterEventOperator {
     }
 
     forward(data, rowInspector);
-
-    vectorExtractRowDynBatch.forgetBatchOnExit();
   }
 }


[10/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part.q.out
new file mode 100644
index 0000000..cac8a9e
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part.q.out
@@ -0,0 +1,3999 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=11)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=11)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=10 width=11)
+                default@part_add_int_permute_select,part_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: drop table part_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: drop table part_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=15)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=15)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=10 width=15)
+                default@part_add_int_string_permute_select,part_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c	d
+1	1	1	original	NULL	NULL
+10	1	6	new	NULL	NULL
+2	1	2	original	NULL	NULL
+3	1	3	original	NULL	NULL
+4	1	4	original	NULL	NULL
+5	2	1	new	10	ten
+6	2	2	new	20	twenty
+7	2	3	new	30	thirty
+8	2	4	new	40	forty
+9	1	5	new	NULL	NULL
+PREHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	c	d
+1	1	1	NULL	NULL
+10	1	6	NULL	NULL
+2	1	2	NULL	NULL
+3	1	3	NULL	NULL
+4	1	4	NULL	NULL
+5	2	1	10	ten
+6	2	2	20	twenty
+7	2	3	30	thirty
+8	2	4	40	forty
+9	1	5	NULL	NULL
+PREHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	d
+1	1	1	NULL
+10	1	6	NULL
+2	1	2	NULL
+3	1	3	NULL
+4	1	4	NULL
+5	2	1	ten
+6	2	2	twenty
+7	2	3	thirty
+8	2	4	forty
+9	1	5	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	d
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	ten
+6	2	twenty
+7	2	thirty
+8	2	forty
+9	1	NULL
+PREHOOK: query: drop table part_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: drop table part_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=38)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=38)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=38)
+                default@part_change_string_group_double,part_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Input: default@part_change_string_group_double@part=1
+PREHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Input: default@part_change_string_group_double@part=1
+POSTHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	b
+1	1	753.7028	753.7028	753.7028	original
+10	1	9250340.75	9250340.75	9250340.75	new
+2	1	-3651.672121	-3651.672121	-3651.672121	original
+3	1	-29.0764	-29.0764	-29.0764	original
+4	1	-10.3	-10.3	-10.3	original
+5	2	30.774	30.774	30.774	new
+6	2	20.31	20.31	20.31	new
+7	2	46114.284799488	46114.284799488	46114.284799488	new
+8	2	-66475.561431	-66475.561431	-66475.561431	new
+9	1	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table part_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: drop table part_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=132)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=132)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+              TableScan [TS_0] (rows=9 width=132)
+                default@part_change_date_group_string_group_timestamp,part_change_date_group_string_group_timestamp,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	1	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	1	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	2	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	2	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	1	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	NULL	6229-06-28 02:54:28.970117179	NULL	new
+9	1	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	NULL	5966-07-09 03:30:50.597	NULL	new
+PREHOOK: query: drop table part_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table part_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=61)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=61)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+              TableScan [TS_0] (rows=9 width=61)
+                default@part_change_date_group_string_group_date,part_change_date_group_string_group_date,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	1	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	1	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	2	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	2	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	2	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	2	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table part_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: drop table part_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@part_change_numeric_group_string_group_multi_ints_string,part_change_numeric_group_string_group_multi_ints_string,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+10	1	17	NULL	754072151	3289094	new
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+5	2	2000	72909	3244222	-93222	new
+6	2	1	200	2323322	5430907	new
+7	2	256	32768	31889	470614135	new
+8	2	5555	40000	-719017797	810662019	new
+9	1	100	5000	5443	0	new
+PREHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=2
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@part_change_numeric_group_string_group_multi_ints_char,part_change_numeric_group_string_group_multi_ints_char,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_stri

<TRUNCATED>

[25/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out
new file mode 100644
index 0000000..7d45136
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_primitive.q.out
@@ -0,0 +1,3038 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	true	0004-09-22 18:26:29.519542222	original
+2	1	45	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		2007-02-09 05:17:29.368756876	original
+3	1	NULL	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	6229-06-28 02:54:28.970117179	original
+4	1	1	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	time will come	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_boolean
+            Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: boolean), c2 (type: boolean), c3 (type: boolean), c4 (type: boolean), c5 (type: boolean), c6 (type: boolean), c7 (type: boolean), c8 (type: boolean), c9 (type: boolean), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+              Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: boolean), _col3 (type: boolean), _col4 (type: boolean), _col5 (type: boolean), _col6 (type: boolean), _col7 (type: boolean), _col8 (type: boolean), _col9 (type: boolean), _col10 (type: boolean), _col11 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: boolean), VALUE._col2 (type: boolean), VALUE._col3 (type: boolean), VALUE._col4 (type: boolean), VALUE._col5 (type: boolean), VALUE._col6 (type: boolean), VALUE._col7 (type: boolean), VALUE._col8 (type: boolean), VALUE._col9 (type: boolean), VALUE._col10 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+          Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+PREHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+POSTHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	true	true	true	true	true	true	true	true	original
+2	1	true	true	true	true	true	true	true	false	true	original
+3	1	NULL	NULL	true	true	true	true	true	true	true	original
+4	1	true	NULL	true	true	true	true	true	true	true	original
+5	2	true	true	false	true	true	false	false	true	false	new
+6	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	true	NULL	new
+PREHOOK: query: drop table part_change_various_various_boolean
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: drop table part_change_various_various_boolean
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_tinyint
+            Statistics: Num rows: 6 Data size: 673 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: tinyint), c2 (type: tinyint), c3 (type: tinyint), c4 (type: tinyint), c5 (type: tinyint), c6 (type: tinyint), c7 (type: tinyint), c8 (type: tinyint), c9 (type: tinyint), c10 (type: tinyint), c11 (type: tinyint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 673 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 673 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: tinyint), _col3 (type: tinyint), _col4 (type: tinyint), _col5 (type: tinyint), _col6 (type: tinyint), _col7 (type: tinyint), _col8 (type: tinyint), _col9 (type: tinyint), _col10 (type: tinyint), _col11 (type: tinyint), _col12 (type: tinyint), _col13 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: tinyint), VALUE._col2 (type: tinyint), VALUE._col3 (type: tinyint), VALUE._col4 (type: tinyint), VALUE._col5 (type: tinyint), VALUE._col6 (type: tinyint), VALUE._col7 (type: tinyint), VALUE._col8 (type: tinyint), VALUE._col9 (type: tinyint), VALUE._col10 (type: tinyint), VALUE._col11 (type: tinyint), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 673 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 673 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+PREHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	-48	-51	-66	-29	119	119	73	73	73	-43	original
+2	1	1	-24	-63	-25	-67	34	34	NULL	NULL	NULL	105	original
+3	1	0	NULL	-66	-38	30	85	85	1	1	1	84	original
+4	1	1	NULL	87	6	34	36	36	-77	-77	-77	60	original
+5	2	23	71	127	1	NULL	-60	68	NULL	NULL	40	93	new
+6	1	NULL	85	-126	NULL	91	113	-28	-63	0	8	NULL	new
+PREHOOK: query: drop table part_change_various_various_tinyint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: drop table part_change_various_various_tinyint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_smallint
+            Statistics: Num rows: 6 Data size: 712 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: smallint), c2 (type: smallint), c3 (type: smallint), c4 (type: smallint), c5 (type: smallint), c6 (type: smallint), c7 (type: smallint), c8 (type: smallint), c9 (type: smallint), c10 (type: smallint), c11 (type: smallint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 712 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 712 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: smallint), _col4 (type: smallint), _col5 (type: smallint), _col6 (type: smallint), _col7 (type: smallint), _col8 (type: smallint), _col9 (type: smallint), _col10 (type: smallint), _col11 (type: smallint), _col12 (type: smallint), _col13 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: smallint), VALUE._col2 (type: smallint), VALUE._col3 (type: smallint), VALUE._col4 (type: smallint), VALUE._col5 (type: smallint), VALUE._col6 (type: smallint), VALUE._col7 (type: smallint), VALUE._col8 (type: smallint), VALUE._col9 (type: smallint), VALUE._col10 (type: smallint), VALUE._col11 (type: smallint), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 712 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 712 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+PREHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+POSTHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	7373	-32578	-29	119	119	-2999	-2999	-2999	-11819	original
+2	1	1	100	25025	29415	-3651	-19422	-19422	NULL	NULL	NULL	29801	original
+3	1	0	72	-32578	-27686	30	-939	-939	1	1	1	-8620	original
+4	1	1	-90	14935	12294	-19422	9764	9764	5299	5299	5299	-17092	original
+5	2	-30486	15230	3117	1	-117	-7131	20227	-24858	-28771	NULL	NULL	new
+6	1	NULL	NULL	-4844	15507	91	22385	-28	-12268	0	NULL	NULL	new
+PREHOOK: query: drop table part_change_various_various_smallint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: drop table part_change_various_various_smallint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_int
+            Statistics: Num rows: 6 Data size: 729 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: int), c2 (type: int), c3 (type: int), c4 (type: int), c5 (type: int), c6 (type: int), c7 (type: int), c8 (type: int), c9 (type: int), c10 (type: int), c11 (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 729 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 729 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: int), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: int), _col8 (type: int), _col9 (type: int), _col10 (type: int), _col11 (type: int), _col12 (type: int), _col13 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: int), VALUE._col3 (type: int), VALUE._col4 (type: int), VALUE._col5 (type: int), VALUE._col6 (type: int), VALUE._col7 (type: int), VALUE._col8 (type: int), VALUE._col9 (type: int), VALUE._col10 (type: int), VALUE._col11 (type: int), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 729 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 729 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+PREHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+POSTHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-1888628267	original
+2	1	1	100	NULL	1903063783	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	1272503892	original
+4	1	1	-90	NULL	3289094	46114	9250340	9250340	5299	5299	5299	1021033788	original
+5	2	560930	-1281818	127	1	84269672	-60	27094665	-36016110	-182	3244222	561431	new
+6	1	NULL	NULL	NULL	-167	91	113	-164341325	-134237413	0	6229	NULL	new
+PREHOOK: query: drop table part_change_various_various_int
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: drop table part_change_various_various_int
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	NULL	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	1998287.3541	1998287.3541             	1998287.3541	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_bigint
+            Statistics: Num rows: 6 Data size: 764 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: bigint), c2 (type: bigint), c3 (type: bigint), c4 (type: bigint), c5 (type: bigint), c6 (type: bigint), c7 (type: bigint), c8 (type: bigint), c9 (type: bigint), c10 (type: bigint), c11 (type: bigint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col1

<TRUNCATED>

[04/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out
new file mode 100644
index 0000000..9abbcba
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out
@@ -0,0 +1,2738 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	true	0004-09-22 18:26:29.519542222	original
+2	1	45	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		2007-02-09 05:17:29.368756876	original
+3	1	NULL	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	6229-06-28 02:54:28.970117179	original
+4	1	1	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	time will come	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=96)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=96)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+              TableScan [TS_0] (rows=6 width=96)
+                default@part_change_various_various_boolean,part_change_various_various_boolean,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+PREHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+POSTHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	true	true	true	true	true	true	true	true	original
+2	1	true	true	true	true	true	true	true	false	true	original
+3	1	NULL	NULL	true	true	true	true	true	true	true	original
+4	1	true	NULL	true	true	true	true	true	true	true	original
+5	2	true	true	false	true	true	false	false	true	false	new
+6	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	true	NULL	new
+PREHOOK: query: drop table part_change_various_various_boolean
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: drop table part_change_various_various_boolean
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=97)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=97)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=97)
+                default@part_change_various_various_tinyint,part_change_various_various_tinyint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+PREHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	-48	-51	-66	-29	119	119	73	73	73	-43	original
+2	1	1	-24	-63	-25	-67	34	34	NULL	NULL	NULL	105	original
+3	1	0	NULL	-66	-38	30	85	85	1	1	1	84	original
+4	1	1	NULL	87	6	34	36	36	-77	-77	-77	60	original
+5	2	23	71	127	1	NULL	-60	68	NULL	NULL	40	93	new
+6	1	NULL	85	-126	NULL	91	113	-28	-63	0	8	NULL	new
+PREHOOK: query: drop table part_change_various_various_tinyint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: drop table part_change_various_various_tinyint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=103)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=103)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=103)
+                default@part_change_various_various_smallint,part_change_various_various_smallint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+PREHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+POSTHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	7373	-32578	-29	119	119	-2999	-2999	-2999	-11819	original
+2	1	1	100	25025	29415	-3651	-19422	-19422	NULL	NULL	NULL	29801	original
+3	1	0	72	-32578	-27686	30	-939	-939	1	1	1	-8620	original
+4	1	1	-90	14935	12294	-19422	9764	9764	5299	5299	5299	-17092	original
+5	2	-30486	15230	3117	1	-117	-7131	20227	-24858	-28771	NULL	NULL	new
+6	1	NULL	NULL	-4844	15507	91	22385	-28	-12268	0	NULL	NULL	new
+PREHOOK: query: drop table part_change_various_various_smallint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: drop table part_change_various_various_smallint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=106)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=106)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=106)
+                default@part_change_various_various_int,part_change_various_various_int,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+PREHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+POSTHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-1888628267	original
+2	1	1	100	NULL	1903063783	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	1272503892	original
+4	1	1	-90	NULL	3289094	46114	9250340	9250340	5299	5299	5299	1021033788	original
+5	2	560930	-1281818	127	1	84269672	-60	27094665	-36016110	-182	3244222	561431	new
+6	1	NULL	NULL	NULL	-167	91	113	-164341325	-134237413	0	6229	NULL	new
+PREHOOK: query: drop table part_change_various_various_int
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: drop table part_change_various_various_int
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	NULL	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	1998287.3541	1998287.3541             	1998287.3541	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=113)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=113)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=113)
+                default@part_change_various_various_bigint,part_change_various_various_bigint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+PREHOOK: Input: default@part_change_various_various_bigint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+POSTHOOK: Input: default@part_change_various_various_bigint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-62018170411	original
+2	1	1	100	NULL	NULL	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	134416490068	original
+4	1	1	-90	NULL	3289094	46114	9250340	9250340	1998287	NULL	NULL	1021033788	original
+5	2	5573199346255528403	71	151775655	1	131	-60	6275638713485623898	-230	-695025	519542222	-29	new
+6	1	NULL	NULL	-126	NULL	91	113	-28	-63	0	3244222	NULL	new
+PREHOOK: query: drop table part_change_various_various_bigint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: drop table part_change_various_various_bigint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_float
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_float
+PREHOOK: query: insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_various_various_float@part=1
+POSTHOOK: query: insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_various_various_float@part=1
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(par

<TRUNCATED>

[38/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java
index 3eadc12..2e8331a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorDeserializeRow.java
@@ -24,22 +24,40 @@ import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.hadoop.hive.common.type.HiveDecimal;
-import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
-import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.plan.VectorPartitionConversion;
 import org.apache.hadoop.hive.serde2.fast.DeserializeRead;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
+import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
+import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+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;
 import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
-import org.apache.hive.common.util.DateUtils;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.Writable;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
 
 /**
  * This class deserializes a serialization format into a row of a VectorizedRowBatch.
- * 
+ *
  * The caller provides the hive type names and output column numbers in the order desired to
  * deserialize.
  *
@@ -54,667 +72,592 @@ public final class VectorDeserializeRow<T extends DeserializeRead> {
 
   private T deserializeRead;
 
-  private Reader<T>[] readersByValue;
-  private Reader<T>[] readersByReference;
-  private TypeInfo[] typeInfos;
+  private TypeInfo[] sourceTypeInfos;
 
   public VectorDeserializeRow(T deserializeRead) {
     this();
     this.deserializeRead = deserializeRead;
-    typeInfos = deserializeRead.typeInfos();
-    
+    sourceTypeInfos = deserializeRead.typeInfos();
   }
 
   // Not public since we must have the deserialize read object.
   private VectorDeserializeRow() {
   }
 
-  private abstract class Reader<R extends DeserializeRead> {
-    protected int columnIndex;
-
-    Reader(int columnIndex) {
-      this.columnIndex = columnIndex;
-    }
-
-    abstract void apply(VectorizedRowBatch batch, int batchIndex) throws IOException;
-  }
-
-  private abstract class AbstractLongReader extends Reader<T> {
-
-    AbstractLongReader(int columnIndex) {
-      super(columnIndex);
-    }
-  }
-
-  private class BooleanReader extends AbstractLongReader {
-
-    BooleanReader(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        boolean value = deserializeRead.readBoolean();
-        colVector.vector[batchIndex] = (value ? 1 : 0);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class ByteReader extends AbstractLongReader {
-
-    ByteReader(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        byte value = deserializeRead.readByte();
-        colVector.vector[batchIndex] = (long) value;
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class ShortReader extends AbstractLongReader {
-
-    ShortReader(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        short value = deserializeRead.readShort();
-        colVector.vector[batchIndex] = (long) value;
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class IntReader extends AbstractLongReader {
-
-    IntReader(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        int value = deserializeRead.readInt();
-        colVector.vector[batchIndex] = (long) value;
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class LongReader extends AbstractLongReader {
-
-    LongReader(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        long value = deserializeRead.readLong();
-        colVector.vector[batchIndex] = value;
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class DateReader extends AbstractLongReader {
-
-    DeserializeRead.ReadDateResults readDateResults;
-
-    DateReader(int columnIndex) {
-      super(columnIndex);
-      readDateResults = deserializeRead.createReadDateResults();
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readDate(readDateResults);
-        colVector.vector[batchIndex] = (long) readDateResults.getDays();
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private abstract class AbstractTimestampReader extends Reader<T> {
-
-    AbstractTimestampReader(int columnIndex) {
-      super(columnIndex);
-    }
-  }
-
-  private class TimestampReader extends AbstractTimestampReader {
-
-    DeserializeRead.ReadTimestampResults readTimestampResults;
-
-    TimestampReader(int columnIndex) {
-      super(columnIndex);
-      readTimestampResults = deserializeRead.createReadTimestampResults();
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      TimestampColumnVector colVector = (TimestampColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readTimestamp(readTimestampResults);
-        colVector.set(batchIndex, readTimestampResults.getTimestamp());
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-
-  }
-
-  private class IntervalYearMonthReader extends AbstractLongReader {
-
-    DeserializeRead.ReadIntervalYearMonthResults readIntervalYearMonthResults;
-
-    IntervalYearMonthReader(int columnIndex) {
-      super(columnIndex);
-      readIntervalYearMonthResults = deserializeRead.createReadIntervalYearMonthResults();
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      LongColumnVector colVector = (LongColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readIntervalYearMonth(readIntervalYearMonthResults);
-        HiveIntervalYearMonth hiym = readIntervalYearMonthResults.getHiveIntervalYearMonth();
-        colVector.vector[batchIndex] = hiym.getTotalMonths();
-        colVector.isNull[batchIndex] = false;
+  /*
+   * These members have information for deserializing a row into the VectorizedRowBatch
+   * columns.
+   *
+   * We say "source" because when there is conversion we are converting th deserialized source into
+   * a target data type.
+   */
+  boolean[] isConvert;
+                // For each column, are we converting the row column?
+
+  int[] projectionColumnNums;
+                // Assigning can be a subset of columns, so this is the projection --
+                // the batch column numbers.
+
+  Category[] sourceCategories;
+                // The data type category of each column being deserialized.
+
+  PrimitiveCategory[] sourcePrimitiveCategories;
+                //The data type primitive category of each column being deserialized.
+
+  int[] maxLengths;
+                // For the CHAR and VARCHAR data types, the maximum character length of
+                // the columns.  Otherwise, 0.
+
+  /*
+   * These members have information for data type conversion.
+   * Not defined if there is no conversion.
+   */
+  Writable[] convertSourceWritables;
+                // Conversion requires source be placed in writable so we can call upon
+                // VectorAssignRow to convert and assign the row column.
+
+  VectorAssignRow convertVectorAssignRow;
+                // Use its conversion ability.
+
+  /*
+   * Allocate the source deserialization related arrays.
+   */
+  private void allocateArrays(int count) {
+    isConvert = new boolean[count];
+    projectionColumnNums = new int[count];
+    sourceCategories = new Category[count];
+    sourcePrimitiveCategories = new PrimitiveCategory[count];
+    maxLengths = new int[count];
+  }
+
+  /*
+   * Allocate the conversion related arrays (optional).
+   */
+  private void allocateConvertArrays(int count) {
+    convertSourceWritables = new Writable[count];
+  }
+
+  /*
+   * Initialize one column's source deserializtion related arrays.
+   */
+  private void initSourceEntry(int logicalColumnIndex, int projectionColumnNum, TypeInfo sourceTypeInfo) {
+    isConvert[logicalColumnIndex] = false;
+    projectionColumnNums[logicalColumnIndex] = projectionColumnNum;
+    Category sourceCategory = sourceTypeInfo.getCategory();
+    sourceCategories[logicalColumnIndex] = sourceCategory;
+    if (sourceCategory == Category.PRIMITIVE) {
+      PrimitiveTypeInfo sourcePrimitiveTypeInfo = (PrimitiveTypeInfo) sourceTypeInfo;
+      PrimitiveCategory sourcePrimitiveCategory = sourcePrimitiveTypeInfo.getPrimitiveCategory();
+      sourcePrimitiveCategories[logicalColumnIndex] = sourcePrimitiveCategory;
+      switch (sourcePrimitiveCategory) {
+      case CHAR:
+        maxLengths[logicalColumnIndex] = ((CharTypeInfo) sourcePrimitiveTypeInfo).getLength();
+        break;
+      case VARCHAR:
+        maxLengths[logicalColumnIndex] = ((VarcharTypeInfo) sourcePrimitiveTypeInfo).getLength();
+        break;
+      default:
+        // No additional data type specific setting.
+        break;
       }
+    } else {
+      // We don't currently support complex types.
+      Preconditions.checkState(false);
     }
   }
 
-  private abstract class AbstractIntervalDayTimeReader extends Reader<T> {
+  /*
+   * Initialize the conversion related arrays.  Assumes initSourceEntry has already been called.
+   */
+  private void initConvertTargetEntry(int logicalColumnIndex) {
+    isConvert[logicalColumnIndex] = true;
 
-    AbstractIntervalDayTimeReader(int columnIndex) {
-      super(columnIndex);
+    if (sourceCategories[logicalColumnIndex] == Category.PRIMITIVE) {
+      convertSourceWritables[logicalColumnIndex] =
+          VectorizedBatchUtil.getPrimitiveWritable(sourcePrimitiveCategories[logicalColumnIndex]);
+    } else {
+      // We don't currently support complex types.
+      Preconditions.checkState(false);
     }
   }
 
-  private class IntervalDayTimeReader extends AbstractIntervalDayTimeReader {
-
-    DeserializeRead.ReadIntervalDayTimeResults readIntervalDayTimeResults;
-
-    IntervalDayTimeReader(int columnIndex) {
-      super(columnIndex);
-      readIntervalDayTimeResults = deserializeRead.createReadIntervalDayTimeResults();
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      IntervalDayTimeColumnVector colVector = (IntervalDayTimeColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readIntervalDayTime(readIntervalDayTimeResults);
-        HiveIntervalDayTime idt = readIntervalDayTimeResults.getHiveIntervalDayTime();
-        colVector.set(batchIndex, idt);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+  /*
+   * Specify the columns to deserialize into as an array.
+   */
+  public void init(int[] outputColumns) throws HiveException {
 
-  private abstract class AbstractDoubleReader extends Reader<T> {
+    final int count = sourceTypeInfos.length;
+    allocateArrays(count);
 
-    AbstractDoubleReader(int columnIndex) {
-      super(columnIndex);
+    for (int i = 0; i < count; i++) {
+      int outputColumn = outputColumns[i];
+      initSourceEntry(i, outputColumn, sourceTypeInfos[i]);
     }
   }
 
-  private class FloatReader extends AbstractDoubleReader {
-
-    FloatReader(int columnIndex) {
-      super(columnIndex);
-    }
+  /*
+   * Specify the columns to deserialize into as a list.
+   */
+  public void init(List<Integer> outputColumns) throws HiveException {
 
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      DoubleColumnVector colVector = (DoubleColumnVector) batch.cols[columnIndex];
+    final int count = sourceTypeInfos.length;
+    allocateArrays(count);
 
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        float value = deserializeRead.readFloat();
-        colVector.vector[batchIndex] = (double) value;
-        colVector.isNull[batchIndex] = false;
-      }
+    for (int i = 0; i < count; i++) {
+      int outputColumn = outputColumns.get(i);
+      initSourceEntry(i, outputColumn, sourceTypeInfos[i]);
     }
   }
 
-  private class DoubleReader extends AbstractDoubleReader {
-
-    DoubleReader(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      DoubleColumnVector colVector = (DoubleColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        double value = deserializeRead.readDouble();
-        colVector.vector[batchIndex] = value;
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+  /*
+   * Specify the columns to deserialize into a range starting at a column number.
+   */
+  public void init(int startColumn) throws HiveException {
 
-  private abstract class AbstractBytesReader extends Reader<T> {
+    final int count = sourceTypeInfos.length;
+    allocateArrays(count);
 
-    AbstractBytesReader(int columnIndex) {
-      super(columnIndex);
+    for (int i = 0; i < count; i++) {
+      int outputColumn = startColumn + i;
+      initSourceEntry(i, outputColumn, sourceTypeInfos[i]);
     }
   }
 
-  private class StringReaderByValue extends AbstractBytesReader {
-
-    private DeserializeRead.ReadStringResults readStringResults;
-
-    StringReaderByValue(int columnIndex) {
-      super(columnIndex);
-      readStringResults = deserializeRead.createReadStringResults();
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
+  public void init(boolean[] columnsToIncludeTruncated) throws HiveException {
 
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readString(readStringResults);
-        colVector.setVal(batchIndex, readStringResults.bytes,
-                readStringResults.start, readStringResults.length);
-        colVector.isNull[batchIndex] = false;
-      }
+    if (columnsToIncludeTruncated != null) {
+      deserializeRead.setColumnsToInclude(columnsToIncludeTruncated);
     }
-  }
 
-  private class StringReaderByReference extends AbstractBytesReader {
+    final int columnCount = (columnsToIncludeTruncated == null ?
+        sourceTypeInfos.length : columnsToIncludeTruncated.length);
+    allocateArrays(columnCount);
 
-    private DeserializeRead.ReadStringResults readStringResults;
+    for (int i = 0; i < columnCount; i++) {
 
-    StringReaderByReference(int columnIndex) {
-      super(columnIndex);
-      readStringResults = deserializeRead.createReadStringResults();
-    }
+      if (columnsToIncludeTruncated != null && !columnsToIncludeTruncated[i]) {
 
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
+        // Field not included in query.
 
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
       } else {
-        deserializeRead.readString(readStringResults);
-        colVector.setRef(batchIndex, readStringResults.bytes,
-                readStringResults.start, readStringResults.length);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class CharReaderByValue extends AbstractBytesReader {
 
-    private DeserializeRead.ReadStringResults readStringResults;
+        initSourceEntry(i, i, sourceTypeInfos[i]);
 
-    private CharTypeInfo charTypeInfo;
-
-    CharReaderByValue(CharTypeInfo charTypeInfo, int columnIndex) {
-      super(columnIndex);
-      readStringResults = deserializeRead.createReadStringResults();
-      this.charTypeInfo = charTypeInfo;
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
-        // that does not use Java String objects.
-        deserializeRead.readString(readStringResults);
-        int adjustedLength = StringExpr.rightTrimAndTruncate(readStringResults.bytes,
-                readStringResults.start, readStringResults.length, charTypeInfo.getLength());
-        colVector.setVal(batchIndex, readStringResults.bytes, readStringResults.start, adjustedLength);
-        colVector.isNull[batchIndex] = false;
       }
     }
   }
 
-  private class CharReaderByReference extends AbstractBytesReader {
-
-    private DeserializeRead.ReadStringResults readStringResults;
-
-    private CharTypeInfo charTypeInfo;
-
-    CharReaderByReference(CharTypeInfo charTypeInfo, int columnIndex) {
-      super(columnIndex);
-      readStringResults = deserializeRead.createReadStringResults();
-      this.charTypeInfo = charTypeInfo;
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
-        // that does not use Java String objects.
-        deserializeRead.readString(readStringResults);
-        int adjustedLength = StringExpr.rightTrimAndTruncate(readStringResults.bytes,
-                readStringResults.start, readStringResults.length, charTypeInfo.getLength());
-        colVector.setRef(batchIndex, readStringResults.bytes, readStringResults.start, adjustedLength);
-        colVector.isNull[batchIndex] = false;
-      }
+  /**
+   * Initialize for converting the source data type that are going to be read with the
+   * DeserializedRead interface passed to the constructor to the target data types desired in
+   * the VectorizedRowBatch.
+   *
+   * No projection -- the column range 0 .. count-1
+   *
+   *    where count is the minimum of the target data type array size, included array size,
+   *       and source data type array size.
+   *
+   * @param targetTypeInfos
+   * @param columnsToIncludeTruncated
+   * @return the minimum count described above is returned.  That is, the number of columns
+   *         that will be processed by deserialize.
+   * @throws HiveException
+   */
+  public int initConversion(TypeInfo[] targetTypeInfos,
+      boolean[] columnsToIncludeTruncated) throws HiveException {
+
+    if (columnsToIncludeTruncated != null) {
+      deserializeRead.setColumnsToInclude(columnsToIncludeTruncated);
+    }
+
+    int targetColumnCount;
+    if (columnsToIncludeTruncated == null) {
+      targetColumnCount = targetTypeInfos.length;
+    } else {
+      targetColumnCount = Math.min(targetTypeInfos.length, columnsToIncludeTruncated.length);
     }
-  }
 
-  private class VarcharReaderByValue extends AbstractBytesReader {
+    int sourceColumnCount = Math.min(sourceTypeInfos.length, targetColumnCount);
+    allocateArrays(sourceColumnCount);
+    allocateConvertArrays(sourceColumnCount);
 
-    private DeserializeRead.ReadStringResults readStringResults;
+    boolean atLeastOneConvert = false;
+    for (int i = 0; i < sourceColumnCount; i++) {
 
-    private VarcharTypeInfo varcharTypeInfo;
+      if (columnsToIncludeTruncated != null && !columnsToIncludeTruncated[i]) {
 
-    VarcharReaderByValue(VarcharTypeInfo varcharTypeInfo, int columnIndex) {
-      super(columnIndex);
-      readStringResults = deserializeRead.createReadStringResults();
-      this.varcharTypeInfo = varcharTypeInfo;
-    }
+        // Field not included in query.
 
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
       } else {
-        // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
-        // that does not use Java String objects.
-        deserializeRead.readString(readStringResults);
-        int adjustedLength = StringExpr.truncate(readStringResults.bytes,
-                readStringResults.start, readStringResults.length, varcharTypeInfo.getLength());
-        colVector.setVal(batchIndex, readStringResults.bytes, readStringResults.start, adjustedLength);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
-
-  private class VarcharReaderByReference extends AbstractBytesReader {
 
-    private DeserializeRead.ReadStringResults readStringResults;
+        TypeInfo sourceTypeInfo = sourceTypeInfos[i];
+        TypeInfo targetTypeInfo = targetTypeInfos[i];
 
-    private VarcharTypeInfo varcharTypeInfo;
-
-    VarcharReaderByReference(VarcharTypeInfo varcharTypeInfo, int columnIndex) {
-      super(columnIndex);
-      readStringResults = deserializeRead.createReadStringResults();
-      this.varcharTypeInfo = varcharTypeInfo;
-    }
+        if (!sourceTypeInfo.equals(targetTypeInfo)) {
 
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
+          if (VectorPartitionConversion.isImplicitVectorColumnConversion(sourceTypeInfo, targetTypeInfo)) {
 
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
-        // that does not use Java String objects.
-        deserializeRead.readString(readStringResults);
-        int adjustedLength = StringExpr.truncate(readStringResults.bytes,
-                readStringResults.start, readStringResults.length, varcharTypeInfo.getLength());
-        colVector.setRef(batchIndex, readStringResults.bytes, readStringResults.start, adjustedLength);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
-  }
+            // Do implicit conversion from source type to target type.
+            initSourceEntry(i, i, sourceTypeInfo);
 
-  private class BinaryReaderByValue extends AbstractBytesReader {
+          } else {
 
-    private DeserializeRead.ReadBinaryResults readBinaryResults;
+            // Do formal conversion...
+            initSourceEntry(i, i, sourceTypeInfo);
+            initConvertTargetEntry(i);
+            atLeastOneConvert = true;
 
-    BinaryReaderByValue(int columnIndex) {
-      super(columnIndex);
-      readBinaryResults = deserializeRead.createReadBinaryResults();
-    }
+          }
+        } else {
 
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
+          // No conversion.
+          initSourceEntry(i, i, sourceTypeInfo);
 
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readBinary(readBinaryResults);
-        colVector.setVal(batchIndex, readBinaryResults.bytes,
-                readBinaryResults.start, readBinaryResults.length);
-        colVector.isNull[batchIndex] = false;
+        }
       }
     }
-  }
 
-  private class BinaryReaderByReference extends AbstractBytesReader {
+    if (atLeastOneConvert) {
 
-    private DeserializeRead.ReadBinaryResults readBinaryResults;
-
-    BinaryReaderByReference(int columnIndex) {
-      super(columnIndex);
-      readBinaryResults = deserializeRead.createReadBinaryResults();
+      // Let the VectorAssignRow class do the conversion.
+      convertVectorAssignRow = new VectorAssignRow();
+      convertVectorAssignRow.initConversion(sourceTypeInfos, targetTypeInfos,
+          columnsToIncludeTruncated);
     }
 
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      BytesColumnVector colVector = (BytesColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readBinary(readBinaryResults);
-        colVector.setRef(batchIndex, readBinaryResults.bytes,
-                readBinaryResults.start, readBinaryResults.length);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
+    return sourceColumnCount;
   }
 
-  private class HiveDecimalReader extends Reader<T> {
-
-    private DeserializeRead.ReadDecimalResults readDecimalResults;
-
-    HiveDecimalReader(int columnIndex) {
-      super(columnIndex);
-      readDecimalResults = deserializeRead.createReadDecimalResults();
-    }
-
-    @Override
-    void apply(VectorizedRowBatch batch, int batchIndex) throws IOException {
-      DecimalColumnVector colVector = (DecimalColumnVector) batch.cols[columnIndex];
-
-      if (deserializeRead.readCheckNull()) {
-        VectorizedBatchUtil.setNullColIsNullValue(colVector, batchIndex);
-      } else {
-        deserializeRead.readHiveDecimal(readDecimalResults);
-        HiveDecimal hiveDecimal = readDecimalResults.getHiveDecimal();
-        colVector.vector[batchIndex].set(hiveDecimal);
-        colVector.isNull[batchIndex] = false;
-      }
-    }
+  public void init() throws HiveException {
+    init(0);
   }
 
-  private void addReader(int index, int outputColumn) throws HiveException {
-    Reader<T> readerByValue = null;
-    Reader<T> readerByReference = null;
-
-    PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfos[index];
-    PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
-    switch (primitiveCategory) {
-    // case VOID:
-    //   UNDONE:
-    // break;
-    case BOOLEAN:
-      readerByValue = new BooleanReader(outputColumn);
-      break;
-    case BYTE:
-      readerByValue = new ByteReader(outputColumn);
-      break;
-    case SHORT:
-      readerByValue = new ShortReader(outputColumn);
-      break;
-    case INT:
-      readerByValue = new IntReader(outputColumn);
-      break;
-    case LONG:
-      readerByValue = new LongReader(outputColumn);
-      break;
-    case DATE:
-      readerByValue = new DateReader(outputColumn);
-      break;
-    case TIMESTAMP:
-      readerByValue = new TimestampReader(outputColumn);
-      break;
-    case FLOAT:
-      readerByValue = new FloatReader(outputColumn);
-      break;
-    case DOUBLE:
-      readerByValue = new DoubleReader(outputColumn);
-      break;
-    case STRING:
-      readerByValue = new StringReaderByValue(outputColumn);
-      readerByReference = new StringReaderByReference(outputColumn);
-      break;
-    case CHAR:
+  /**
+   * Deserialize one row column value.
+   *
+   * @param batch
+   * @param batchIndex
+   * @param logicalColumnIndex
+   * @throws IOException
+   */
+  private void deserializeRowColumn(VectorizedRowBatch batch, int batchIndex,
+      int logicalColumnIndex) throws IOException {
+    final int projectionColumnNum = projectionColumnNums[logicalColumnIndex];
+    if (deserializeRead.readCheckNull()) {
+      VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+      return;
+    }
+
+    // We have a value for the row column.
+    Category sourceCategory = sourceCategories[logicalColumnIndex];
+    if (sourceCategory == null) {
+      /*
+       * This is a column that we don't want (i.e. not included).
+       * The deserializeRead.readCheckNull() has read the field, so we are done.
+       */
+      return;
+    }
+    switch (sourceCategory) {
+    case PRIMITIVE:
       {
-        CharTypeInfo charTypeInfo = (CharTypeInfo) primitiveTypeInfo;
-        readerByValue = new CharReaderByValue(charTypeInfo, outputColumn);
-        readerByReference = new CharReaderByReference(charTypeInfo, outputColumn);
+        PrimitiveCategory sourcePrimitiveCategory = sourcePrimitiveCategories[logicalColumnIndex];
+        switch (sourcePrimitiveCategory) {
+        case VOID:
+          VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+          return;
+        case BOOLEAN:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              (deserializeRead.currentBoolean ? 1 : 0);
+          break;
+        case BYTE:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentByte;
+          break;
+        case SHORT:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentShort;
+          break;
+        case INT:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentInt;
+          break;
+        case LONG:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentLong;
+          break;
+        case TIMESTAMP:
+          ((TimestampColumnVector) batch.cols[projectionColumnNum]).set(
+              batchIndex, deserializeRead.currentTimestampWritable.getTimestamp());
+          break;
+        case DATE:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentDateWritable.getDays();
+          break;
+        case FLOAT:
+          ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentFloat;
+          break;
+        case DOUBLE:
+          ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentDouble;
+          break;
+        case BINARY:
+        case STRING:
+          ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+              batchIndex,
+              deserializeRead.currentBytes,
+              deserializeRead.currentBytesStart,
+              deserializeRead.currentBytesLength);
+          break;
+        case VARCHAR:
+          {
+            // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
+            // that does not use Java String objects.
+            int adjustedLength = StringExpr.truncate(
+                deserializeRead.currentBytes,
+                deserializeRead.currentBytesStart,
+                deserializeRead.currentBytesLength,
+                maxLengths[logicalColumnIndex]);
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex,
+                deserializeRead.currentBytes,
+                deserializeRead.currentBytesStart,
+                adjustedLength);
+          }
+          break;
+        case CHAR:
+          {
+            // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
+            // that does not use Java String objects.
+            int adjustedLength = StringExpr.rightTrimAndTruncate(
+                deserializeRead.currentBytes,
+                deserializeRead.currentBytesStart,
+                deserializeRead.currentBytesLength,
+                maxLengths[logicalColumnIndex]);
+            ((BytesColumnVector) batch.cols[projectionColumnNum]).setVal(
+                batchIndex,
+                deserializeRead.currentBytes,
+                deserializeRead.currentBytesStart,
+                adjustedLength);
+          }
+          break;
+        case DECIMAL:
+          ((DecimalColumnVector) batch.cols[projectionColumnNum]).set(
+              batchIndex, deserializeRead.currentHiveDecimalWritable.getHiveDecimal());
+          break;
+        case INTERVAL_YEAR_MONTH:
+          ((LongColumnVector) batch.cols[projectionColumnNum]).vector[batchIndex] =
+              deserializeRead.currentHiveIntervalYearMonthWritable.getHiveIntervalYearMonth().getTotalMonths();
+          break;
+        case INTERVAL_DAY_TIME:
+          ((IntervalDayTimeColumnVector) batch.cols[projectionColumnNum]).set(
+              batchIndex, deserializeRead.currentHiveIntervalDayTimeWritable.getHiveIntervalDayTime());
+          break;
+        default:
+          throw new RuntimeException("Primitive category " + sourcePrimitiveCategory.name() +
+              " not supported");
+        }
       }
       break;
-    case VARCHAR:
+    default:
+      throw new RuntimeException("Category " + sourceCategory.name() + " not supported");
+    }
+
+    // We always set the null flag to false when there is a value.
+    batch.cols[projectionColumnNum].isNull[batchIndex] = false;
+  }
+
+  /**
+   * Deserialize and convert one row column value.
+   *
+   * We deserialize into a writable and then pass that writable to an instance of VectorAssignRow
+   * to convert the writable to the target data type and assign it into the VectorizedRowBatch.
+   *
+   * @param batch
+   * @param batchIndex
+   * @param logicalColumnIndex
+   * @throws IOException
+   */
+  private void deserializeConvertRowColumn(VectorizedRowBatch batch, int batchIndex,
+      int logicalColumnIndex) throws IOException {
+    final int projectionColumnNum = projectionColumnNums[logicalColumnIndex];
+    if (deserializeRead.readCheckNull()) {
+      VectorizedBatchUtil.setNullColIsNullValue(batch.cols[projectionColumnNum], batchIndex);
+      return;
+    }
+
+    // We have a value for the row column.
+    Category sourceCategory = sourceCategories[logicalColumnIndex];
+    if (sourceCategory == null) {
+      /*
+       * This is a column that we don't want (i.e. not included).
+       * The deserializeRead.readCheckNull() has read the field, so we are done.
+       */
+      return;
+    }
+    Writable convertSourceWritable = convertSourceWritables[logicalColumnIndex];
+    switch (sourceCategory) {
+    case PRIMITIVE:
       {
-        VarcharTypeInfo varcharTypeInfo = (VarcharTypeInfo) primitiveTypeInfo;
-        readerByValue = new VarcharReaderByValue(varcharTypeInfo, outputColumn);
-        readerByReference = new VarcharReaderByReference(varcharTypeInfo, outputColumn);
+        PrimitiveCategory sourcePrimitiveCategory = sourcePrimitiveCategories[logicalColumnIndex];
+        switch (sourcePrimitiveCategory) {
+        case VOID:
+          convertSourceWritable = null;
+          break;
+        case BOOLEAN:
+          ((BooleanWritable) convertSourceWritable).set(deserializeRead.currentBoolean);
+          break;
+        case BYTE:
+          ((ByteWritable) convertSourceWritable).set(deserializeRead.currentByte);
+          break;
+        case SHORT:
+          ((ShortWritable) convertSourceWritable).set(deserializeRead.currentShort);
+          break;
+        case INT:
+          ((IntWritable) convertSourceWritable).set(deserializeRead.currentInt);
+          break;
+        case LONG:
+          ((LongWritable) convertSourceWritable).set(deserializeRead.currentLong);
+          break;
+        case TIMESTAMP:
+          ((TimestampWritable) convertSourceWritable).set(deserializeRead.currentTimestampWritable);
+          break;
+        case DATE:
+          ((DateWritable) convertSourceWritable).set(deserializeRead.currentDateWritable);
+          break;
+        case FLOAT:
+          ((FloatWritable) convertSourceWritable).set(deserializeRead.currentFloat);
+          break;
+        case DOUBLE:
+          ((DoubleWritable) convertSourceWritable).set(deserializeRead.currentDouble);
+          break;
+        case BINARY:
+          if (deserializeRead.currentBytes == null) {
+            LOG.info("null binary entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+          }
+
+          ((BytesWritable) convertSourceWritable).set(
+              deserializeRead.currentBytes,
+              deserializeRead.currentBytesStart,
+              deserializeRead.currentBytesLength);
+          break;
+        case STRING:
+          if (deserializeRead.currentBytes == null) {
+            throw new RuntimeException(
+                "null string entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+          }
+
+          // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
+          ((Text) convertSourceWritable).set(
+              deserializeRead.currentBytes,
+              deserializeRead.currentBytesStart,
+              deserializeRead.currentBytesLength);
+          break;
+        case VARCHAR:
+          {
+            // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
+            // that does not use Java String objects.
+            if (deserializeRead.currentBytes == null) {
+              throw new RuntimeException(
+                  "null varchar entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+            }
+
+            int adjustedLength = StringExpr.truncate(
+                deserializeRead.currentBytes,
+                deserializeRead.currentBytesStart,
+                deserializeRead.currentBytesLength,
+                maxLengths[logicalColumnIndex]);
+
+            ((HiveVarcharWritable) convertSourceWritable).set(
+                new String(
+                  deserializeRead.currentBytes,
+                  deserializeRead.currentBytesStart,
+                  adjustedLength,
+                  Charsets.UTF_8),
+                -1);
+          }
+          break;
+        case CHAR:
+          {
+            // Use the basic STRING bytes read to get access, then use our optimal truncate/trim method
+            // that does not use Java String objects.
+            if (deserializeRead.currentBytes == null) {
+              throw new RuntimeException(
+                  "null char entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+            }
+
+            int adjustedLength = StringExpr.rightTrimAndTruncate(
+                deserializeRead.currentBytes,
+                deserializeRead.currentBytesStart,
+                deserializeRead.currentBytesLength,
+                maxLengths[logicalColumnIndex]);
+
+            ((HiveCharWritable) convertSourceWritable).set(
+                new String(
+                  deserializeRead.currentBytes,
+                  deserializeRead.currentBytesStart,
+                  adjustedLength, Charsets.UTF_8),
+                -1);
+          }
+          break;
+        case DECIMAL:
+          ((HiveDecimalWritable) convertSourceWritable).set(
+              deserializeRead.currentHiveDecimalWritable);
+          break;
+        case INTERVAL_YEAR_MONTH:
+          ((HiveIntervalYearMonthWritable) convertSourceWritable).set(
+              deserializeRead.currentHiveIntervalYearMonthWritable);
+          break;
+        case INTERVAL_DAY_TIME:
+          ((HiveIntervalDayTimeWritable) convertSourceWritable).set(
+              deserializeRead.currentHiveIntervalDayTimeWritable);
+          break;
+        default:
+          throw new RuntimeException("Primitive category " + sourcePrimitiveCategory.name() +
+              " not supported");
+        }
       }
       break;
-    case BINARY:
-      readerByValue = new BinaryReaderByValue(outputColumn);
-      readerByReference = new BinaryReaderByReference(outputColumn);
-      break;
-    case DECIMAL:
-      readerByValue = new HiveDecimalReader(outputColumn);
-      break;
-    case INTERVAL_YEAR_MONTH:
-      readerByValue = new IntervalYearMonthReader(outputColumn);
-      break;
-    case INTERVAL_DAY_TIME:
-      readerByValue = new IntervalDayTimeReader(outputColumn);
-      break;
     default:
-      throw new HiveException("Unexpected primitive type category " + primitiveCategory);
-    }
-
-    readersByValue[index] = readerByValue;
-    if (readerByReference == null) {
-      readersByReference[index] = readerByValue;
-    } else {
-      readersByReference[index] = readerByReference;
-    }
-  }
-
-  public void init(int[] outputColumns) throws HiveException {
-
-    readersByValue = new Reader[typeInfos.length];
-    readersByReference = new Reader[typeInfos.length];
-
-    for (int i = 0; i < typeInfos.length; i++) {
-      int outputColumn = outputColumns[i];
-      addReader(i, outputColumn);
-    }
-  }
-
-  public void init(List<Integer> outputColumns) throws HiveException {
-
-    readersByValue = new Reader[typeInfos.length];
-    readersByReference = new Reader[typeInfos.length];
-
-    for (int i = 0; i < typeInfos.length; i++) {
-      int outputColumn = outputColumns.get(i);
-      addReader(i, outputColumn);
-    }
-  }
-
-  public void init(int startColumn) throws HiveException {
-
-    readersByValue = new Reader[typeInfos.length];
-    readersByReference = new Reader[typeInfos.length];
-
-    for (int i = 0; i < typeInfos.length; i++) {
-      int outputColumn = startColumn + i;
-      addReader(i, outputColumn);
+      throw new RuntimeException("Category " + sourceCategory.name() + " not supported");
     }
-  }
 
-  public void init() throws HiveException {
-    init(0);
+    /*
+     * Convert our source object we just read into the target object and store that in the
+     * VectorizedRowBatch.
+     */
+    convertVectorAssignRow.assignConvertRowColumn(batch, batchIndex, logicalColumnIndex,
+        convertSourceWritable);
   }
 
+  /**
+   * Specify the range of bytes to deserialize in the next call to the deserialize method.
+   *
+   * @param bytes
+   * @param offset
+   * @param length
+   */
   public void setBytes(byte[] bytes, int offset, int length) {
     deserializeRead.set(bytes, offset, length);
   }
 
-  public void deserializeByValue(VectorizedRowBatch batch, int batchIndex) throws IOException {
+  /**
+   * Deserialize a row from the range of bytes specified by setBytes.
+   *
+   * @param batch
+   * @param batchIndex
+   * @throws IOException
+   */
+  public void deserialize(VectorizedRowBatch batch, int batchIndex) throws IOException {
+    final int count = isConvert.length;
     int i = 0;
     try {
-      while (i < readersByValue.length) {
-        readersByValue[i].apply(batch, batchIndex);
+      while (i < count) {
+        if (isConvert[i]) {
+          deserializeConvertRowColumn(batch, batchIndex, i);
+        } else {
+          deserializeRowColumn(batch, batchIndex, i);
+        }
         i++;    // Increment after the apply which could throw an exception.
       }
     } catch (EOFException e) {
@@ -723,27 +666,14 @@ public final class VectorDeserializeRow<T extends DeserializeRead> {
     deserializeRead.extraFieldsCheck();
   }
 
-  public void deserializeByReference(VectorizedRowBatch batch, int batchIndex) throws IOException {
-    int i = 0;
-    try {
-      while (i < readersByReference.length) {
-      readersByReference[i].apply(batch, batchIndex);
-      i++;    // Increment after the apply which could throw an exception.
-    }
-    } catch (EOFException e) {
-      throwMoreDetailedException(e, i);
-    }
-    deserializeRead.extraFieldsCheck();
-  }
-
   private void throwMoreDetailedException(IOException e, int index) throws EOFException {
     StringBuilder sb = new StringBuilder();
-    sb.append("Detail: \"" + e.toString() + "\" occured for field " + index + " of " +  typeInfos.length + " fields (");
-    for (int i = 0; i < typeInfos.length; i++) {
+    sb.append("Detail: \"" + e.toString() + "\" occured for field " + index + " of " +  sourceTypeInfos.length + " fields (");
+    for (int i = 0; i < sourceTypeInfos.length; i++) {
       if (i > 0) {
         sb.append(", ");
       }
-      sb.append(((PrimitiveTypeInfo) typeInfos[i]).getPrimitiveCategory().name());
+      sb.append(((PrimitiveTypeInfo) sourceTypeInfos[i]).getPrimitiveCategory().name());
     }
     sb.append(")");
     throw new EOFException(sb.toString());

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRow.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRow.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRow.java
index e883f38..c965dc8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRow.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRow.java
@@ -18,758 +18,329 @@
 
 package org.apache.hadoop.hive.ql.exec.vector;
 
-import java.io.IOException;
-import java.sql.Date;
-import java.sql.Timestamp;
 import java.util.List;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.hadoop.hive.common.type.HiveChar;
-import org.apache.hadoop.hive.common.type.HiveDecimal;
-import org.apache.hadoop.hive.common.type.HiveIntervalDayTime;
-import org.apache.hadoop.hive.common.type.HiveIntervalYearMonth;
-import org.apache.hadoop.hive.common.type.HiveVarchar;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.StringExpr;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.HiveCharWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.hadoop.hive.serde2.io.HiveIntervalDayTimeWritable;
+import org.apache.hadoop.hive.serde2.io.HiveIntervalYearMonthWritable;
+import org.apache.hadoop.hive.serde2.io.HiveVarcharWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.io.TimestampWritable;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
 import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableHiveCharObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableHiveDecimalObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableHiveVarcharObjectInspector;
 import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
-import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
+import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.DataOutputBuffer;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
 import org.apache.hadoop.io.Text;
-import org.apache.hive.common.util.DateUtils;
+import org.apache.hadoop.io.Writable;
+
+import com.google.common.base.Charsets;
 
 /**
- * This class extracts specified VectorizedRowBatch row columns into a Writable row Object[].
- *
- * The caller provides the hive type names and target column numbers in the order desired to
- * extract from the Writable row Object[].
+ * This class extracts specified VectorizedRowBatch row columns into writables.
  *
- * This class is abstract to allow the subclasses to control batch reuse.
+ * The caller provides the data types and projection column numbers of a subset of the columns
+ * to extract.
  */
-public abstract class VectorExtractRow {
+public class VectorExtractRow {
+
   private static final long serialVersionUID = 1L;
   private static final Logger LOG = LoggerFactory.getLogger(VectorExtractRow.class);
 
-  private boolean tolerateNullColumns;
-
-  public VectorExtractRow() {
-    // UNDONE: For now allow null columns until vector_decimal_mapjoin.q is understood...
-    tolerateNullColumns = true;
-  }
-
-  protected abstract class Extractor {
-    protected int columnIndex;
-    protected Object object;
-
-    public Extractor(int columnIndex) {
-      this.columnIndex = columnIndex;
-    }
-
-    public int getColumnIndex() {
-      return columnIndex;
-    }
-
-    abstract void setColumnVector(VectorizedRowBatch batch);
-
-    abstract void forgetColumnVector();
-
-    abstract Object extract(int batchIndex);
-  }
-
-  private class VoidExtractor extends Extractor {
-
-    VoidExtractor(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-    }
-
-    @Override
-    void forgetColumnVector() {
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      return null;
-    }
-  }
-
-  private abstract class AbstractLongExtractor extends Extractor {
-
-    protected LongColumnVector colVector;
-    protected long[] vector;
-
-    AbstractLongExtractor(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (LongColumnVector) batch.cols[columnIndex];
-      vector = colVector.vector;
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-      vector = null;
-    }
-  }
-
-  protected class BooleanExtractor extends AbstractLongExtractor {
-
-    BooleanExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableBooleanObjectInspector.create(false);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        long value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableBooleanObjectInspector.set(object, value == 0 ? false : true);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  protected class ByteExtractor extends AbstractLongExtractor {
-
-    ByteExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableByteObjectInspector.create((byte) 0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        long value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableByteObjectInspector.set(object, (byte) value);
-        return object;
-      } else {
-        return null;
+  /*
+   * These members have information for extracting a row column objects from VectorizedRowBatch
+   * columns.
+   */
+  int[] projectionColumnNums;
+              // Extraction can be a subset of columns, so this is the projection --
+              // the batch column numbers.
+
+  Category[] categories;
+              // The data type category of each column being extracted.
+
+  PrimitiveCategory[] primitiveCategories;
+              // The data type primitive category of each column being assigned.
+
+  int[] maxLengths;
+              // For the CHAR and VARCHAR data types, the maximum character length of
+              // the columns.  Otherwise, 0.
+
+  Writable[] primitiveWritables;
+            // The extracted values will be placed in these writables.
+
+  /*
+   * Allocate the various arrays.
+   */
+  private void allocateArrays(int count) {
+    projectionColumnNums = new int[count];
+    categories = new Category[count];
+    primitiveCategories = new PrimitiveCategory[count];
+    maxLengths = new int[count];
+    primitiveWritables = new Writable[count];
+  }
+
+  /*
+   * Initialize one column's array entries.
+   */
+  private void initEntry(int logicalColumnIndex, int projectionColumnNum, TypeInfo typeInfo) {
+    projectionColumnNums[logicalColumnIndex] = projectionColumnNum;
+    Category category = typeInfo.getCategory();
+    categories[logicalColumnIndex] = category;
+    if (category == Category.PRIMITIVE) {
+      PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) typeInfo;
+      PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
+      primitiveCategories[logicalColumnIndex] = primitiveCategory;
+
+      switch (primitiveCategory) {
+      case CHAR:
+        maxLengths[logicalColumnIndex] = ((CharTypeInfo) primitiveTypeInfo).getLength();
+        break;
+      case VARCHAR:
+        maxLengths[logicalColumnIndex] = ((VarcharTypeInfo) primitiveTypeInfo).getLength();
+        break;
+      default:
+        // No additional data type specific setting.
+        break;
       }
-    }
-  }
-
-  private class ShortExtractor extends AbstractLongExtractor {
-
-    ShortExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableShortObjectInspector.create((short) 0);
-    }
 
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        long value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableShortObjectInspector.set(object, (short) value);
-        return object;
-      } else {
-        return null;
-      }
+      primitiveWritables[logicalColumnIndex] =
+          VectorizedBatchUtil.getPrimitiveWritable(primitiveCategory);
     }
   }
 
-  private class IntExtractor extends AbstractLongExtractor {
-
-    IntExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableIntObjectInspector.create(0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        long value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableIntObjectInspector.set(object, (int) value);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private class LongExtractor extends AbstractLongExtractor {
-
-    LongExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableLongObjectInspector.create(0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        long value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableLongObjectInspector.set(object, value);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private class DateExtractor extends AbstractLongExtractor {
-
-    private Date date;
-
-    DateExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableDateObjectInspector.create(new Date(0));
-      date = new Date(0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        long value = vector[adjustedIndex];
-        date.setTime(DateWritable.daysToMillis((int) value));
-        PrimitiveObjectInspectorFactory.writableDateObjectInspector.set(object, date);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private abstract class AbstractTimestampExtractor extends Extractor {
-
-    protected TimestampColumnVector colVector;
-
-    AbstractTimestampExtractor(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (TimestampColumnVector) batch.cols[columnIndex];
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-    }
-  }
-
-  private class TimestampExtractor extends AbstractTimestampExtractor {
-
-    protected Timestamp timestamp;
-
-    TimestampExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector.create(new Timestamp(0));
-      timestamp = new Timestamp(0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        colVector.timestampUpdate(timestamp, adjustedIndex);
-        PrimitiveObjectInspectorFactory.writableTimestampObjectInspector.set(object, timestamp);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private class IntervalYearMonthExtractor extends AbstractLongExtractor {
-
-    private HiveIntervalYearMonth hiveIntervalYearMonth;
-
-    IntervalYearMonthExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableHiveIntervalYearMonthObjectInspector.create(new HiveIntervalYearMonth(0));
-      hiveIntervalYearMonth = new HiveIntervalYearMonth(0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        int totalMonths = (int) vector[adjustedIndex];
-        hiveIntervalYearMonth.set(totalMonths);
-        PrimitiveObjectInspectorFactory.writableHiveIntervalYearMonthObjectInspector.set(object, hiveIntervalYearMonth);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private abstract class AbstractIntervalDayTimeExtractor extends Extractor {
-
-    protected IntervalDayTimeColumnVector colVector;
-
-    AbstractIntervalDayTimeExtractor(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (IntervalDayTimeColumnVector) batch.cols[columnIndex];
-    }
+  /*
+   * Initialize using an StructObjectInspector and a column projection list.
+   */
+  public void init(StructObjectInspector structObjectInspector, List<Integer> projectedColumns)
+      throws HiveException {
 
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-    }
-  }
-
-  private class IntervalDayTimeExtractor extends AbstractIntervalDayTimeExtractor {
-
-    private HiveIntervalDayTime hiveIntervalDayTime;
-
-    IntervalDayTimeExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableHiveIntervalDayTimeObjectInspector.create(new HiveIntervalDayTime(0, 0));
-      hiveIntervalDayTime = new HiveIntervalDayTime(0, 0);
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        hiveIntervalDayTime.set(colVector.asScratchIntervalDayTime(adjustedIndex));
-        PrimitiveObjectInspectorFactory.writableHiveIntervalDayTimeObjectInspector.set(object, hiveIntervalDayTime);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private abstract class AbstractDoubleExtractor extends Extractor {
-
-    protected DoubleColumnVector colVector;
-    protected double[] vector;
-
-    AbstractDoubleExtractor(int columnIndex) {
-      super(columnIndex);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (DoubleColumnVector) batch.cols[columnIndex];
-      vector = colVector.vector;
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-      vector = null;
-    }
-  }
-
-  private class FloatExtractor extends AbstractDoubleExtractor {
-
-    FloatExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableFloatObjectInspector.create(0f);
-    }
+    List<? extends StructField> fields = structObjectInspector.getAllStructFieldRefs();
+    final int count = fields.size();
+    allocateArrays(count);
 
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        double value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableFloatObjectInspector.set(object, (float) value);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
+    for (int i = 0; i < count; i++) {
 
-  private class DoubleExtractor extends AbstractDoubleExtractor {
+      int projectionColumnNum = projectedColumns.get(i);
 
-    DoubleExtractor(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableDoubleObjectInspector.create(0f);
-    }
+      StructField field = fields.get(i);
+      ObjectInspector fieldInspector = field.getFieldObjectInspector();
+      TypeInfo typeInfo =
+          TypeInfoUtils.getTypeInfoFromTypeString(fieldInspector.getTypeName());
 
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        double value = vector[adjustedIndex];
-        PrimitiveObjectInspectorFactory.writableDoubleObjectInspector.set(object, value);
-        return object;
-      } else {
-        return null;
-      }
+      initEntry(i, projectionColumnNum, typeInfo);
     }
   }
 
-  private abstract class AbstractBytesExtractor extends Extractor {
+  /*
+   * Initialize using data type names.
+   * No projection -- the column range 0 .. types.size()-1
+   */
+  public void init(List<String> typeNames) throws HiveException {
 
-    protected BytesColumnVector colVector;
+    final int count = typeNames.size();
+    allocateArrays(count);
 
-    AbstractBytesExtractor(int columnIndex) {
-      super(columnIndex);
-    }
+    for (int i = 0; i < count; i++) {
 
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (BytesColumnVector) batch.cols[columnIndex];
-    }
+      TypeInfo typeInfo =
+          TypeInfoUtils.getTypeInfoFromTypeString(typeNames.get(i));
 
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
+      initEntry(i, i, typeInfo);
     }
   }
 
-  private class BinaryExtractorByValue extends AbstractBytesExtractor {
-
-    private DataOutputBuffer buffer;
-
-    // Use the BytesWritable instance here as a reference to data saved in buffer.  We do not
-    // want to pass the binary object inspector a byte[] since we would need to allocate it on the
-    // heap each time to get the length correct.
-    private BytesWritable bytesWritable;
-
-    BinaryExtractorByValue(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableBinaryObjectInspector.create(ArrayUtils.EMPTY_BYTE_ARRAY);
-      buffer = new DataOutputBuffer();
-      bytesWritable = new BytesWritable();
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        byte[] bytes = colVector.vector[adjustedIndex];
-        int start = colVector.start[adjustedIndex];
-        int length = colVector.length[adjustedIndex];
-
-        // Save a copy of the binary data.
-        buffer.reset();
-        try {
-          buffer.write(bytes, start, length);
-        } catch (IOException ioe) {
-          throw new IllegalStateException("bad write", ioe);
-        }
-
-        bytesWritable.set(buffer.getData(), 0, buffer.getLength());
-        PrimitiveObjectInspectorFactory.writableBinaryObjectInspector.set(object, bytesWritable);
-        return object;
-      } else {
-        return null;
-      }
+  public int getCount() {
+    return projectionColumnNums.length;
+  }
+
+  /**
+   * Extract a row's column object from the ColumnVector at batchIndex in the VectorizedRowBatch.
+   *
+   * @param batch
+   * @param batchIndex
+   * @param logicalColumnIndex
+   * @return
+   */
+  public Object extractRowColumn(VectorizedRowBatch batch, int batchIndex, int logicalColumnIndex) {
+    final int projectionColumnNum = projectionColumnNums[logicalColumnIndex];
+    ColumnVector colVector = batch.cols[projectionColumnNum];
+    if (colVector == null) {
+      // In rare cases, the planner will not include columns for reading but other parts of
+      // execution will ask for but not use them..
+      return null;
     }
-  }
-
-  private class StringExtractorByValue extends AbstractBytesExtractor {
-
-    // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
-    private Text text;
-
-    StringExtractorByValue(int columnIndex) {
-      super(columnIndex);
-      object = PrimitiveObjectInspectorFactory.writableStringObjectInspector.create(StringUtils.EMPTY);
-      text = new Text();
+    int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
+    if (!colVector.noNulls && colVector.isNull[adjustedIndex]) {
+      return null;
     }
 
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        byte[] value = colVector.vector[adjustedIndex];
-        int start = colVector.start[adjustedIndex];
-        int length = colVector.length[adjustedIndex];
-
-        if (value == null) {
-          LOG.info("null string entry: batchIndex " + batchIndex + " columnIndex " + columnIndex);
+    Category category = categories[logicalColumnIndex];
+    switch (category) {
+    case PRIMITIVE:
+      {
+        Writable primitiveWritable =
+            primitiveWritables[logicalColumnIndex];
+        PrimitiveCategory primitiveCategory = primitiveCategories[logicalColumnIndex];
+        switch (primitiveCategory) {
+        case VOID:
+          return null;
+        case BOOLEAN:
+          ((BooleanWritable) primitiveWritable).set(
+              ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex] == 0 ?
+                  false : true);
+          return primitiveWritable;
+        case BYTE:
+          ((ByteWritable) primitiveWritable).set(
+              (byte) ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case SHORT:
+          ((ShortWritable) primitiveWritable).set(
+              (short) ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case INT:
+          ((IntWritable) primitiveWritable).set(
+              (int) ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case LONG:
+          ((LongWritable) primitiveWritable).set(
+              ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case TIMESTAMP:
+          ((TimestampWritable) primitiveWritable).set(
+              ((TimestampColumnVector) batch.cols[projectionColumnNum]).asScratchTimestamp(adjustedIndex));
+          return primitiveWritable;
+        case DATE:
+          ((DateWritable) primitiveWritable).set(
+              (int) ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case FLOAT:
+          ((FloatWritable) primitiveWritable).set(
+              (float) ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case DOUBLE:
+          ((DoubleWritable) primitiveWritable).set(
+              ((DoubleColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case BINARY:
+          {
+            BytesColumnVector bytesColVector =
+                ((BytesColumnVector) batch.cols[projectionColumnNum]);
+            byte[] bytes = bytesColVector.vector[adjustedIndex];
+            int start = bytesColVector.start[adjustedIndex];
+            int length = bytesColVector.length[adjustedIndex];
+
+            if (bytes == null) {
+              LOG.info("null binary entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+            }
+
+            BytesWritable bytesWritable = (BytesWritable) primitiveWritable;
+            bytesWritable.set(bytes, start, length);
+            return primitiveWritable;
+          }
+        case STRING:
+          {
+            BytesColumnVector bytesColVector =
+                ((BytesColumnVector) batch.cols[projectionColumnNum]);
+            byte[] bytes = bytesColVector.vector[adjustedIndex];
+            int start = bytesColVector.start[adjustedIndex];
+            int length = bytesColVector.length[adjustedIndex];
+
+            if (bytes == null) {
+              LOG.info("null string entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+            }
+
+            // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
+            ((Text) primitiveWritable).set(bytes, start, length);
+            return primitiveWritable;
+          }
+        case VARCHAR:
+          {
+            BytesColumnVector bytesColVector =
+                ((BytesColumnVector) batch.cols[projectionColumnNum]);
+            byte[] bytes = bytesColVector.vector[adjustedIndex];
+            int start = bytesColVector.start[adjustedIndex];
+            int length = bytesColVector.length[adjustedIndex];
+
+            if (bytes == null) {
+              LOG.info("null varchar entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+            }
+
+            int adjustedLength = StringExpr.truncate(bytes, start, length,
+                maxLengths[logicalColumnIndex]);
+
+            HiveVarcharWritable hiveVarcharWritable = (HiveVarcharWritable) primitiveWritable;
+            hiveVarcharWritable.set(new String(bytes, start, adjustedLength, Charsets.UTF_8), -1);
+            return primitiveWritable;
+          }
+        case CHAR:
+          {
+            BytesColumnVector bytesColVector =
+                ((BytesColumnVector) batch.cols[projectionColumnNum]);
+            byte[] bytes = bytesColVector.vector[adjustedIndex];
+            int start = bytesColVector.start[adjustedIndex];
+            int length = bytesColVector.length[adjustedIndex];
+
+            if (bytes == null) {
+              LOG.info("null char entry: batchIndex " + batchIndex + " projection column num " + projectionColumnNum);
+            }
+
+            int adjustedLength = StringExpr.rightTrimAndTruncate(bytes, start, length,
+                maxLengths[logicalColumnIndex]);
+
+            HiveCharWritable hiveCharWritable = (HiveCharWritable) primitiveWritable;
+            hiveCharWritable.set(new String(bytes, start, adjustedLength, Charsets.UTF_8), -1);
+            return primitiveWritable;
+          }
+        case DECIMAL:
+          ((HiveDecimalWritable) primitiveWritable).set(
+              ((DecimalColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex].getHiveDecimal());
+          return primitiveWritable;
+        case INTERVAL_YEAR_MONTH:
+          ((HiveIntervalYearMonthWritable) primitiveWritable).set(
+              (int) ((LongColumnVector) batch.cols[projectionColumnNum]).vector[adjustedIndex]);
+          return primitiveWritable;
+        case INTERVAL_DAY_TIME:
+          ((HiveIntervalDayTimeWritable) primitiveWritable).set(
+              ((IntervalDayTimeColumnVector) batch.cols[projectionColumnNum]).asScratchIntervalDayTime(adjustedIndex));
+          return primitiveWritable;
+        default:
+          throw new RuntimeException("Primitive category " + primitiveCategory.name() +
+              " not supported");
         }
-        // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
-        text.set(value, start, length);
-
-        PrimitiveObjectInspectorFactory.writableStringObjectInspector.set(object, text);
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private class VarCharExtractorByValue extends AbstractBytesExtractor {
-
-    // We need our own instance of the VARCHAR object inspector to hold the maximum length
-    // from the TypeInfo.
-    private WritableHiveVarcharObjectInspector writableVarcharObjectInspector;
-
-    // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
-    private Text text;
-
-    /*
-     * @param varcharTypeInfo
-     *                      We need the VARCHAR type information that contains the maximum length.
-     * @param columnIndex
-     *                      The vector row batch column that contains the bytes for the VARCHAR.
-     */
-    VarCharExtractorByValue(VarcharTypeInfo varcharTypeInfo, int columnIndex) {
-      super(columnIndex);
-      writableVarcharObjectInspector = new WritableHiveVarcharObjectInspector(varcharTypeInfo);
-      object = writableVarcharObjectInspector.create(new HiveVarchar(StringUtils.EMPTY, -1));
-      text = new Text();
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        byte[] value = colVector.vector[adjustedIndex];
-        int start = colVector.start[adjustedIndex];
-        int length = colVector.length[adjustedIndex];
-
-        // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
-        text.set(value, start, length);
-
-        writableVarcharObjectInspector.set(object, text.toString());
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private class CharExtractorByValue extends AbstractBytesExtractor {
-
-    // We need our own instance of the CHAR object inspector to hold the maximum length
-    // from the TypeInfo.
-    private WritableHiveCharObjectInspector writableCharObjectInspector;
-
-    // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
-    private Text text;
-
-    /*
-     * @param varcharTypeInfo
-     *                      We need the CHAR type information that contains the maximum length.
-     * @param columnIndex
-     *                      The vector row batch column that contains the bytes for the CHAR.
-     */
-    CharExtractorByValue(CharTypeInfo charTypeInfo, int columnIndex) {
-      super(columnIndex);
-      writableCharObjectInspector = new WritableHiveCharObjectInspector(charTypeInfo);
-      object = writableCharObjectInspector.create(new HiveChar(StringUtils.EMPTY, -1));
-      text = new Text();
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        byte[] value = colVector.vector[adjustedIndex];
-        int start = colVector.start[adjustedIndex];
-        int length = colVector.length[adjustedIndex];
-
-        // Use org.apache.hadoop.io.Text as our helper to go from byte[] to String.
-        text.set(value, start, length);
-
-        writableCharObjectInspector.set(object, text.toString());
-        return object;
-      } else {
-        return null;
-      }
-    }
-  }
-
-  private class DecimalExtractor extends Extractor {
-
-    private WritableHiveDecimalObjectInspector writableDecimalObjectInspector;
-    protected DecimalColumnVector colVector;
-
-    /*
-     * @param decimalTypeInfo
-     *                      We need the DECIMAL type information that contains scale and precision.
-     * @param columnIndex
-     *                      The vector row batch column that contains the bytes for the VARCHAR.
-     */
-    DecimalExtractor(DecimalTypeInfo decimalTypeInfo, int columnIndex) {
-      super(columnIndex);
-      writableDecimalObjectInspector = new WritableHiveDecimalObjectInspector(decimalTypeInfo);
-      object = writableDecimalObjectInspector.create(HiveDecimal.ZERO);
-    }
-
-    @Override
-    void setColumnVector(VectorizedRowBatch batch) {
-      colVector = (DecimalColumnVector) batch.cols[columnIndex];
-    }
-
-    @Override
-    void forgetColumnVector() {
-      colVector = null;
-    }
-
-    @Override
-    Object extract(int batchIndex) {
-      int adjustedIndex = (colVector.isRepeating ? 0 : batchIndex);
-      if (colVector.noNulls || !colVector.isNull[adjustedIndex]) {
-        HiveDecimal value = colVector.vector[adjustedIndex].getHiveDecimal();
-        writableDecimalObjectInspector.set(object, value);
-        return object;
-      } else {
-        return null;
       }
-    }
-  }
-
-  private Extractor createExtractor(PrimitiveTypeInfo primitiveTypeInfo, int columnIndex) throws HiveException {
-    PrimitiveCategory primitiveCategory = primitiveTypeInfo.getPrimitiveCategory();
-    Extractor extracter;
-    switch (primitiveCategory) {
-    case VOID:
-      extracter = new VoidExtractor(columnIndex);
-      break;
-    case BOOLEAN:
-      extracter = new BooleanExtractor(columnIndex);
-      break;
-    case BYTE:
-      extracter = new ByteExtractor(columnIndex);
-      break;
-    case SHORT:
-      extracter = new ShortExtractor(columnIndex);
-      break;
-    case INT:
-      extracter = new IntExtractor(columnIndex);
-      break;
-    case LONG:
-      extracter = new LongExtractor(columnIndex);
-      break;
-    case TIMESTAMP:
-      extracter = new TimestampExtractor(columnIndex);
-      break;
-    case DATE:
-      extracter = new DateExtractor(columnIndex);
-      break;
-    case FLOAT:
-      extracter = new FloatExtractor(columnIndex);
-      break;
-    case DOUBLE:
-      extracter = new DoubleExtractor(columnIndex);
-      break;
-    case BINARY:
-      extracter = new BinaryExtractorByValue(columnIndex);
-      break;
-    case STRING:
-      extracter = new StringExtractorByValue(columnIndex);
-      break;
-    case VARCHAR:
-      extracter = new VarCharExtractorByValue((VarcharTypeInfo) primitiveTypeInfo, columnIndex);
-      break;
-    case CHAR:
-      extracter = new CharExtractorByValue((CharTypeInfo) primitiveTypeInfo, columnIndex);
-      break;
-    case DECIMAL:
-      extracter = new DecimalExtractor((DecimalTypeInfo) primitiveTypeInfo, columnIndex);
-      break;
-    case INTERVAL_YEAR_MONTH:
-      extracter = new IntervalYearMonthExtractor(columnIndex);
-      break;
-    case INTERVAL_DAY_TIME:
-      extracter = new IntervalDayTimeExtractor(columnIndex);
-      break;
     default:
-      throw new HiveException("No vector row extracter for primitive category " +
-          primitiveCategory);
+      throw new RuntimeException("Category " + category.name() + " not supported");
     }
-    return extracter;
-  }
-
-  Extractor[] extracters;
-
-  public void init(StructObjectInspector structObjectInspector, List<Integer> projectedColumns) throws HiveException {
-
-    extracters = new Extractor[projectedColumns.size()];
-
-    List<? extends StructField> fields = structObjectInspector.getAllStructFieldRefs();
-
-    int i = 0;
-    for (StructField field : fields) {
-      int columnIndex = projectedColumns.get(i);
-      ObjectInspector fieldInspector = field.getFieldObjectInspector();
-      PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) TypeInfoUtils.getTypeInfoFromTypeString(
-          fieldInspector.getTypeName());
-      extracters[i] = createExtractor(primitiveTypeInfo, columnIndex);
-      i++;
-    }
-  }
-
-  public void init(List<String> typeNames) throws HiveException {
-
-    extracters = new Extractor[typeNames.size()];
-
-    int i = 0;
-    for (String typeName : typeNames) {
-      PrimitiveTypeInfo primitiveTypeInfo = (PrimitiveTypeInfo) TypeInfoUtils.getTypeInfoFromTypeString(typeName);
-      extracters[i] = createExtractor(primitiveTypeInfo, i);
-      i++;
-    }
-  }
-
-  public int getCount() {
-    return extracters.length;
-  }
-
-  protected void setBatch(VectorizedRowBatch batch) throws HiveException {
-
-    for (int i = 0; i < extracters.length; i++) {
-      Extractor extracter = extracters[i];
-      int columnIndex = extracter.getColumnIndex();
-      if (batch.cols[columnIndex] == null) {
-        if (tolerateNullColumns) {
-          // Replace with void...
-          extracter = new VoidExtractor(columnIndex);
-          extracters[i] = extracter;
-        } else {
-          throw new HiveException("Unexpected null vector column " + columnIndex);
-        }
-      }
-      extracter.setColumnVector(batch);
-    }
-  }
-
-  protected void forgetBatch() {
-    for (Extractor extracter : extracters) {
-      extracter.forgetColumnVector();
-    }
-  }
-
-  public Object extractRowColumn(int batchIndex, int logicalColumnIndex) {
-    return extracters[logicalColumnIndex].extract(batchIndex);
   }
 
-  public void extractRow(int batchIndex, Object[] objects) {
-    for (int i = 0; i < extracters.length; i++) {
-      Extractor extracter = extracters[i];
-      objects[i] = extracter.extract(batchIndex);
+  /**
+   * Extract an row object from a VectorizedRowBatch at batchIndex.
+   *
+   * @param batch
+   * @param batchIndex
+   * @param objects
+   */
+  public void extractRow(VectorizedRowBatch batch, int batchIndex, Object[] objects) {
+    for (int i = 0; i < projectionColumnNums.length; i++) {
+      objects[i] = extractRowColumn(batch, batchIndex, i);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowDynBatch.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowDynBatch.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowDynBatch.java
deleted file mode 100644
index 0ff7145..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorExtractRowDynBatch.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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.ql.exec.vector;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-
-/**
- * This class extracts specified VectorizedRowBatch row columns into a Writable row Object[].
- *
- * The caller provides the hive type names and target column numbers in the order desired to
- * extract from the Writable row Object[].
- *
- * This class is for use when the batch being assigned is always the same.
- */
-public class VectorExtractRowDynBatch extends VectorExtractRow {
-
-  public void setBatchOnEntry(VectorizedRowBatch batch) throws HiveException {
-    setBatch(batch);
-  }
-
-  public void forgetBatchOnExit() {
-    forgetBatch();
-  }
-}
\ No newline at end of file


[27/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part.q.out b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part.q.out
index 44f5822..2c1caa3 100644
--- a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part.q.out
+++ b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part.q.out
@@ -1,642 +1,4451 @@
 PREHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Partitioned
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
 --
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned1
+PREHOOK: Output: default@part_add_int_permute_select
 POSTHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Partitioned
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
 PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
+alter table part_add_int_permute_select add columns(c int)
 PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned1
-PREHOOK: Output: default@partitioned1
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
 POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
+alter table part_add_int_permute_select add columns(c int)
 POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@partitioned1@part=2
-POSTHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+PREHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@partitioned1@part=2
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_int_permute_select
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
 #### A masked pattern was here ####
 POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
 1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: drop table part_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: drop table part_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
 --
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
 --
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned2
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@partitioned2@part=2
-POSTHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+PREHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@partitioned2@part=2
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select part,a,b from partitioned2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned2
-PREHOOK: Input: default@partitioned2@part=1
-PREHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Input: default@partitioned2@part=1
-POSTHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: --
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_int_string_permute_select
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c	d
+1	1	1	original	NULL	NULL
+10	1	6	new	NULL	NULL
+2	1	2	original	NULL	NULL
+3	1	3	original	NULL	NULL
+4	1	4	original	NULL	NULL
+5	2	1	new	10	ten
+6	2	2	new	20	twenty
+7	2	3	new	30	thirty
+8	2	4	new	40	forty
+9	1	5	new	NULL	NULL
+PREHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	c	d
+1	1	1	NULL	NULL
+10	1	6	NULL	NULL
+2	1	2	NULL	NULL
+3	1	3	NULL	NULL
+4	1	4	NULL	NULL
+5	2	1	10	ten
+6	2	2	20	twenty
+7	2	3	30	thirty
+8	2	4	40	forty
+9	1	5	NULL	NULL
+PREHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	d
+1	1	1	NULL
+10	1	6	NULL
+2	1	2	NULL
+3	1	3	NULL
+4	1	4	NULL
+5	2	1	ten
+6	2	2	twenty
+7	2	3	thirty
+8	2	4	forty
+9	1	5	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	d
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	ten
+6	2	twenty
+7	2	thirty
+8	2	forty
+9	1	NULL
+PREHOOK: query: drop table part_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: drop table part_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: --
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__7
-PREHOOK: Output: default@partitioned3@part=1
-POSTHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__7
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned3
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned3
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__8
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
+PREHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__8
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Output: default@partitioned3@part=2
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3	_col4
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_string_group_double
+            Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: double), c2 (type: double), c3 (type: double), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: double), _col3 (type: double), _col4 (type: double), _col5 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: double), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Input: default@part_change_string_group_double@part=1
+PREHOOK: Input: default@part_change_string_group_double@part=2
 #### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
-1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
+POSTHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Input: default@part_change_string_group_double@part=1
+POSTHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	b
+1	1	753.7028	753.7028	753.7028	original
+10	1	9250340.75	9250340.75	9250340.75	new
+2	1	-3651.672121	-3651.672121	-3651.672121	original
+3	1	-29.0764	-29.0764	-29.0764	original
+4	1	-10.3	-10.3	-10.3	original
+5	2	30.774	30.774	30.774	new
+6	2	20.31	20.31	20.31	new
+7	2	46114.284799488	46114.284799488	46114.284799488	new
+8	2	-66475.561431	-66475.561431	-66475.561431	new
+9	1	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table part_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: drop table part_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_date_group_string_group_timestamp
+            Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+              Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: char(50)), _col4 (type: char(15)), _col5 (type: varchar(50)), _col6 (type: varchar(15)), _col7 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(15)), VALUE._col4 (type: varchar(50)), VALUE._col5 (type: varchar(15)), VALUE._col6 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+          Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	1	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	1	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	2	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	2	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	1	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	NULL	6229-06-28 02:54:28.970117179	NULL	new
+9	1	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	NULL	5966-07-09 03:30:50.597	NULL	new
+PREHOOK: query: drop table part_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table part_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
 PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
 --
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned4
+PREHOOK: Output: default@part_change_date_group_string_group_date
 POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
 --
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
 PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__9
-PREHOOK: Output: default@partitioned4@part=1
-POSTHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__9
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
 PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned4
-PREHOOK: Output: default@partitioned4
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
 POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
 PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__10
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__10
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Output: default@partitioned4@part=2
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select part,a,b from partitioned4
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned4
-PREHOOK: Input: default@partitioned4@part=1
-PREHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned4
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Input: default@partitioned4@part=1
-POSTHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: DROP TABLE partitioned1
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date P

<TRUNCATED>

[35/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part.q b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part.q
index 173e417..d3c9c8a 100644
--- a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part.q
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part.q
@@ -1,98 +1,822 @@
+set hive.explain.user=true;
 set hive.mapred.mode=nonstrict;
 set hive.cli.print.header=true;
 SET hive.exec.schema.evolution=true;
 SET hive.vectorized.execution.enabled=false;
 set hive.fetch.task.conversion=none;
 set hive.exec.dynamic.partition.mode=nonstrict;
-
+set hive.metastore.disallow.incompatible.col.type.changes=true;
+set hive.default.fileformat=textfile;
 
 -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Partitioned
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
 --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT);
+DESCRIBE FORMATTED part_add_int_permute_select;
 
-insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
+insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
 
 -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string);
+alter table part_add_int_permute_select add columns(c int);
+DESCRIBE FORMATTED part_add_int_permute_select;
+
+insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40);
 
-insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty');
+insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200);
 
-insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred');
+explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num;
 
 -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1;
-select part,a,b,c from partitioned1;
-select part,a,b,c,d from partitioned1;
-select part,a,c,d from partitioned1;
-select part,a,d from partitioned1;
-select part,c from partitioned1;
-select part,d from partitioned1;
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num;
+select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num;
+select insert_num,part,c from part_add_int_permute_select order by insert_num;
 
+drop table part_add_int_permute_select;
+
+
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
 --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
 --
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT);
+DESCRIBE FORMATTED part_add_int_string_permute_select;
+
+insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string);
+DESCRIBE FORMATTED part_add_int_string_permute_select;
+
+insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty');
+
+insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred');
 
-insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
+explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,c from part_add_int_string_permute_select order by insert_num;
+select insert_num,part,d from part_add_int_string_permute_select order by insert_num;
+
+drop table part_add_int_string_permute_select;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original');
 
 -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int;
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING);
 
-insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new');
+insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new');
 
-insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new');
+insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new');
 
-select part,a,b from partitioned2;
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num;
 
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num;
 
+drop table part_change_string_group_double;
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
 --
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
 
-insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original');
+insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original');
 
--- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string);
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
 
-insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1);
+insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new');
+insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new');
 
--- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1;
-select part,a,b,c from partitioned1;
-select part,a,b,c,d from partitioned1;
-select part,a,c,d from partitioned1;
-select part,a,d from partitioned1;
-select part,c from partitioned1;
-select part,d from partitioned1;
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num;
+
+drop table part_change_date_group_string_group_timestamp;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num;
+
+drop table part_change_date_group_string_group_date;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_char_trunc partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_char_trunc partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_varchar(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), c4 VARCHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_varchar_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar_trunc partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_varchar_trunc replace columns (insert_num int, c1 VARCHAR(5), c2 VARCHAR(5), c3 VARCHAR(5), c4 VARCHAR(5), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_multi_ints_varchar_trunc partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_multi_ints_varchar_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_string(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_string partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, - 832222222, 255, 4957,'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_string partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_string order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_string;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_char(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_char partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3,  9000000000, -255, 4957,'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_char partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_char_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_char_trunc partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 832222222, -255, 4957, 'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_char_trunc replace columns (insert_num int, c1 CHAR(7), c2 CHAR(7), c3 CHAR(7), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_char_trunc partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_char_trunc;
 
 
 --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR
 --
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE;
+CREATE TABLE part_change_numeric_group_string_group_floating_varchar(insert_num int, c1 float, c2 double, c3 decimal(38,18), b STRING) PARTITIONED BY(part INT);
 
-insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original');
+insert into table part_change_numeric_group_string_group_floating_varchar partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
 
 -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int;
+alter table part_change_numeric_group_string_group_floating_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_varchar partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR truncation
+--
+CREATE TABLE part_change_numeric_group_string_group_floating_varchar_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_numeric_group_string_group_floating_varchar_trunc partition(part=1)
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_floating_varchar_trunc replace columns (insert_num int, c1 VARCHAR(7), c2 VARCHAR(7), c3 VARCHAR(7), b STRING) ;
+
+insert into table part_change_numeric_group_string_group_floating_varchar_trunc partition(part)
+    values (5, '30.774', '20.31', '46114.284799488', 'new', 2),
+           (6, '-66475.561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+drop table part_change_numeric_group_string_group_floating_varchar_trunc;
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: STRING, (CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_string_group_string_group_string(insert_num int, c1 string, c2 string, c3 string, c4 string, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_string partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_string replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 VARCHAR(50), c4 CHAR(9), b STRING) ;
+
+insert into table part_change_string_group_string_group_string partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_string_group_string_group_string order by insert_num;
+
+drop table part_change_string_group_string_group_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: CHAR, (VARCHAR, VARCHAR trunc, STRING)
+--
+CREATE TABLE part_change_string_group_string_group_char(insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_char partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_char replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(9), c3 STRING, b STRING) ;
+
+insert into table part_change_string_group_string_group_char partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_char order by insert_num;
+
+drop table part_change_string_group_string_group_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: VARCHAR, (CHAR, CHAR trunc, STRING)
+--
+CREATE TABLE part_change_string_group_string_group_varchar(insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_string_group_string_group_varchar partition(part=1)
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_string_group_varchar replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 STRING, b STRING) ;
+
+insert into table part_change_string_group_string_group_varchar partition(part)
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new', 2),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new', 2),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new', 2),
+           (8, '  against', '  against', '  against', 'new', 2),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new', 1),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_string_group_string_group_varchar order by insert_num;
+
+drop table part_change_string_group_string_group_varchar;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: TINYINT, (SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_tinyint(insert_num int, c1 tinyint, c2 tinyint, c3 tinyint, c4 tinyint, c5 tinyint, c6 tinyint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_tinyint partition(part=1)
+    values (1, 45, 45, 45, 45, 45, 45, 'original'),
+           (2, -2, -2, -2, -2, -2, -2, 'original'),
+           (3, -255, -255, -255, -255, -255, -255, 'original'),
+           (4, 100, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_tinyint replace columns (insert_num int, c1 SMALLINT, c2 INT, c3 BIGINT, c4 decimal(38,18), c5 FLOAT, c6 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_tinyint partition(part)
+    values (5, '774', '2031', '200', '12', '99', '0', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', '7', '6', 'new', 2),
+           (7, '256', '32768', '31889', '300', '444', '506', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', '55', '65', 'new', 2),
+           (9, '100', '5000', '5443', '22', '2', '-2', 'new', 1),
+           (10, '17', '90000', '754072151', '95', '20', '18', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,b from part_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_tinyint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: SMALLINT, (INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_smallint(insert_num int, c1 smallint, c2 smallint, c3 smallint, c4 smallint, c5 smallint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_smallint partition(part=1)
+    values (1, 2031, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, -5000, 'original'),
+           (4, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_smallint replace columns (insert_num int, c1 INT, c2 BIGINT, c3 decimal(38,18), c4 FLOAT, c5 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_smallint partition(part)
+    values (5, '774', '2031', '200', '12', '99', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', '7', 'new', 2),
+           (7, '256', '32768', '31889', '300', '444', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', '55', 'new', 2),
+           (9, '100', '5000', '5443', '22', '2', 'new', 1),
+           (10, '17', '90000', '754072151', '95', '20', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_smallint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: INT, (BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_int(insert_num int, c1 int, c2 int, c3 int, c4 int, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_int partition(part=1)
+    values (1, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_int replace columns (insert_num int, c1 BIGINT, c2 decimal(38,18), c3 FLOAT, c4 DOUBLE,  b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_int partition(part)
+    values (5, '774', '2031', '200', '12', 'new', 2),
+           (6, '561431', '52927714', '7203778961',  '8', 'new', 2),
+           (7, '256', '32768', '31889', '300', 'new', 2),
+           (8, '5555', '40000', '-719017797', '45', 'new', 2),
+           (9, '100', '5000', '5443', '22', 'new', 1),
+           (10, '17', '90000', '754072151', '95', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_lower_to_higher_numeric_group_int order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_int;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: BIGINT, (DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_bigint(insert_num int, c1 bigint, c2 bigint, c3 bigint, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_bigint partition(part=1)
+    values (1, 7203778961, 7203778961, 7203778961, 'original'),
+           (2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_bigint replace columns (insert_num int, c1 decimal(38,18), c2 FLOAT, c3 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_bigint partition(part)
+    values (5, '774', '2031', '200', 'new', 2),
+           (6, '561431', '52927714', '7203778961', 'new', 2),
+           (7, '256', '32768', '31889', 'new', 2),
+           (8, '5555', '40000', '-719017797', 'new', 2),
+           (9, '100', '5000', '5443', 'new', 1),
+           (10, '17', '90000', '754072151', 'new', 1);
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_bigint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: DECIMAL, (FLOAT, DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_decimal(insert_num int, c1 decimal(38,18), c2 decimal(38,18), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_decimal partition(part=1)
+    values (1, -29.0764, -29.0764, 'original'),
+           (2, 753.7028, 753.7028, 'original'),
+           (3, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 'original');
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_decimal replace columns (insert_num int, c1 float, c2 double, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_decimal partition(part)
+    values (5, '7.74', '22.3', 'new', 2),
+           (6, '56.1431', '90.9', 'new', 2),
+           (7, '2.56', '25.6', 'new', 2),
+           (8, '555.5', '55.55', 'new', 2),
+           (9, '10.0', '0.100', 'new', 1),
+           (10, '1.7', '17.8888', 'new', 1);
+
+explain
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+drop table part_change_lower_to_higher_numeric_group_decimal;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: FLOAT, (DOUBLE)
+--
+CREATE TABLE part_change_lower_to_higher_numeric_group_float(insert_num int, c1 float, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_lower_to_higher_numeric_group_float partition(part=1)
+    values (1, -29.0764, 'original'),
+           (2, 753.7028, 'original'),
+           (3, -5000, 'original'),
+           (4, 52927714, 'original');
+
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_lower_to_higher_numeric_group_float replace columns (insert_num int, c1 DOUBLE, b STRING) ;
+
+insert into table part_change_lower_to_higher_numeric_group_float partition(part)
+    values (5, '774', 'new', 2),
+           (6, '561431', 'new', 2),
+           (7, '256', 'new', 2),
+           (8, '5555', 'new', 2),
+           (9, '100', 'new', 1),
+           (10, '17',  'new', 1);
 
-insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1);
+explain
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
 
-select part,a,b from partitioned4;
+select insert_num,part,c1,b from part_change_lower_to_higher_numeric_group_float order by insert_num;
 
+drop table part_change_lower_to_higher_numeric_group_float;
 
-DROP TABLE partitioned1;
-DROP TABLE partitioned2;
-DROP TABLE partitioned3;
-DROP TABLE partitioned4;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q
new file mode 100644
index 0000000..f4614ff
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q
@@ -0,0 +1,159 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=false;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT);
+
+CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt;
+
+insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt;
+
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING);
+
+CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt;
+
+insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt;
+
+CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt;
+
+insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt;
+
+explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num;
+
+drop table part_change_various_various_struct1;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original');
+
+select insert_num,part,b from part_add_various_various_struct2 order by insert_num;
+
+-- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>);
+
+CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt;
+
+insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt;
+
+CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt;
+
+insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt;
+
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>);
+
+CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt;
+
+insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt;
+
+CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt;
+
+insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt;
+
+explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num;
+
+drop table part_add_various_various_struct2;
+
+
+
+
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT);
+
+CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt;
+
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>);
+
+CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt;
+
+CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile;
+load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt;
+
+insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt;
+
+explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num;
+
+drop table part_add_to_various_various_struct4;


[09/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..4e03c0b
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_complex.q.out
@@ -0,0 +1,673 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=151)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=151)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=6 width=151)
+                default@part_change_various_various_struct1,part_change_various_various_struct1,Tbl:COMPLETE,Col:NONE,Output:["insert_num","s1","b"]
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=8 width=113)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=8 width=113)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=8 width=113)
+                default@part_add_various_various_struct2,part_add_various_various_struct2,Tbl:COMPLETE,Col:NONE,Output:["insert_num","b","s2"]
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=4 width=84)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=4 width=84)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=4 width=84)
+                default@part_add_to_various_various_struct4,part_add_to_various_various_struct4,Tbl:COMPLETE,Col:NONE,Output:["insert_num","b","s3"]
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4


[05/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..f45b517
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part_all_complex.q.out
@@ -0,0 +1,675 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=6 width=151)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=6 width=151)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=6 width=151)
+                default@part_change_various_various_struct1,part_change_various_various_struct1,Tbl:COMPLETE,Col:NONE,Output:["insert_num","s1","b"]
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=8 width=113)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=8 width=113)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=8 width=113)
+                default@part_add_various_various_struct2,part_add_various_various_struct2,Tbl:COMPLETE,Col:NONE,Output:["insert_num","b","s2"]
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=4 width=84)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=4 width=84)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=4 width=84)
+                default@part_add_to_various_various_struct4,part_add_to_various_various_struct4,Tbl:COMPLETE,Col:NONE,Output:["insert_num","b","s3"]
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4


[32/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q
new file mode 100644
index 0000000..952517f
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_part_all_primitive.q
@@ -0,0 +1,514 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=true;
+SET hive.vectorized.use.row.serde.deserialize=false;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING);
+
+insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new');
+
+insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+drop table part_change_various_various_boolean;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING);
+
+insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new');
+
+insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+drop table part_change_various_various_tinyint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING);
+
+insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new');
+
+insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+drop table part_change_various_various_smallint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING);
+
+insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new');
+
+insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+drop table part_change_various_various_int;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING);
+
+insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new');
+
+insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+drop table part_change_various_various_bigint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_float replace columns (insert_num int, c1 FLOAT, c2 FLOAT, c3 FLOAT, c4 FLOAT, c5 FLOAT, c6 FLOAT, c7 FLOAT, c8 FLOAT, c9 FLOAT, c10 FLOAT, c11 FLOAT, b STRING);
+
+insert into table part_change_various_various_float partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, -3651.67212, 46114.28, 'new');
+
+insert into table part_change_various_various_float partition(part=1)
+    values (6, -1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -93222.200, 29.076, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+drop table part_change_various_various_float;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> DOUBLE
+--
+CREATE TABLE part_change_various_various_double(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_double partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE, b STRING);
+
+insert into table part_change_various_various_double partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, 0.00007011717, 4.28479948, 'new');
+
+insert into table part_change_various_various_double partition(part=1)
+    values (6, -1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -66475.0000008, -284799488.1, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+drop table part_change_various_various_double;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, STRING, CHAR, VARCHAR, TIMESTAMP) --> DECIMAL
+--
+CREATE TABLE part_change_various_various_decimal(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_decimal partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '--1551801.09502', '--1551801.09502', '--1551801.09502', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '2402.3', '2402.3', '2402.3', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_decimal replace columns (insert_num int, c1 DECIMAL(38,18), c2 DECIMAL(38,18), c3 DECIMAL(38,18), c4 DECIMAL(38,18), c5 DECIMAL(38,18), c6 DECIMAL(38,18), c7 DECIMAL(38,18), c8 DECIMAL(38,18), c9 DECIMAL(38,18), c10 DECIMAL(38,18), c11 DECIMAL(38,18), b STRING);
+
+insert into table part_change_various_various_decimal partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, 0.00007011717, 4.28479948, 'new');
+
+insert into table part_change_various_various_decimal partition(part=1)
+    values (6,-1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -66475.0000008, -284799488.1, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+drop table part_change_various_various_decimal;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY) --> STRING
+--
+CREATE TABLE part_change_various_various_string(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_string partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,          '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING, c8 STRING, c9 STRING, c10 STRING, c11 STRING, c12 STRING, c13 STRING, b STRING);
+
+insert into table part_change_various_various_string partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_string partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+drop table part_change_various_various_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, VARCHAR, TIMESTAMP, DATE, BINARY) --> CHAR
+--
+CREATE TABLE part_change_various_various_char(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 VARCHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_char partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_char replace columns (insert_num int, c1 CHAR(25), c2 CHAR(25), c3 CHAR(25), c4 CHAR(25), c5 CHAR(25), c6 CHAR(25), c7 CHAR(25), c8 CHAR(25), c9 CHAR(25), c10 CHAR(25), c11 CHAR(25), c12 CHAR(25), c13 CHAR(25), b STRING);
+
+insert into table part_change_various_various_char partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_char partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+drop table part_change_various_various_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, VARCHAR, TIMESTAMP, DATE, BINARY) --> CHAR trunc
+--
+CREATE TABLE part_change_various_various_char_trunc(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 VARCHAR(8), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_char_trunc partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_char_trunc replace columns (insert_num int, c1 CHAR(8), c2 CHAR(8), c3 CHAR(8), c4 CHAR(8), c5 CHAR(8), c6 CHAR(8), c7 CHAR(8), c8 CHAR(8), c9 CHAR(8), c10 CHAR(8), c11 CHAR(8), c12 CHAR(8), c13 CHAR(8), b STRING);
+
+insert into table part_change_various_various_char_trunc partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_char_trunc partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+drop table part_change_various_various_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, TIMESTAMP, DATE, BINARY) --> VARCHAR
+--
+CREATE TABLE part_change_various_various_varchar(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_varchar partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_varchar replace columns (insert_num int, c1 VARCHAR(25), c2 VARCHAR(25), c3 VARCHAR(25), c4 VARCHAR(25), c5 VARCHAR(25), c6 VARCHAR(25), c7 VARCHAR(25), c8 VARCHAR(25), c9 VARCHAR(25), c10 VARCHAR(25), c11 VARCHAR(25), c12 VARCHAR(25), c13 VARCHAR(25), b STRING);
+
+insert into table part_change_various_various_varchar partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_varchar partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+drop table part_change_various_various_varchar;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, TIMESTAMP, DATE, BINARY) --> VARCHAR trunc
+--
+CREATE TABLE part_change_various_various_varchar_trunc(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_varchar_trunc partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_varchar_trunc replace columns (insert_num int, c1 VARCHAR(8), c2 VARCHAR(8), c3 VARCHAR(8), c4 VARCHAR(8), c5 VARCHAR(8), c6 VARCHAR(8), c7 VARCHAR(8), c8 VARCHAR(8), c9 VARCHAR(8), c10 VARCHAR(8), c11 VARCHAR(8), c12 VARCHAR(8), c13 VARCHAR(8), b STRING);
+
+insert into table part_change_various_various_varchar_trunc partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_varchar_trunc partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+drop table part_change_various_various_varchar_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, VARCHAR, DATE) --> TIMESTAMP
+--
+CREATE TABLE part_change_various_various_timestamp(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 VARCHAR(25), c12 DATE, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_timestamp partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876',  '2007-02-09 05:17:29.368756876', '0004-09-22', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,          '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179',  '6229-06-28 02:54:28.970117179', '5966-07-09', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073',  '2002-05-10 05:29:48.990818073', '1815-05-06', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_timestamp replace columns (insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, c6 TIMESTAMP, c7 TIMESTAMP, c8 TIMESTAMP, c9 TIMESTAMP, c10 TIMESTAMP, c11 TIMESTAMP, c12 TIMESTAMP, b STRING);
+
+insert into table part_change_various_various_timestamp partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'timestamp', 'timestamp', 'timestamp', 'date', 'new');
+
+insert into table part_change_various_various_timestamp partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      '2016-03-07 03:02:22.0',   '2016-03-07 03:02:22.0',  '2016-03-07 03:02:22.0', '2016-03-07', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+drop table part_change_various_various_timestamp;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (STRING, CHAR, VARCHAR, TIMESTAMP --> DATE
+--
+CREATE TABLE part_change_various_various_date(insert_num int, c1 STRING, c2 CHAR(25), c3 VARCHAR(25), c4 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_date partition(part=1)
+    values(1, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222',  '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876',  '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179',  '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073',  '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_date replace columns (insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, b STRING);
+
+insert into table part_change_various_various_date partition(part=2)
+    values (5, '2016-03-07', '2016-03-07', '2016-03-07', '2016-03-07', 'new');
+
+insert into table part_change_various_various_date partition(part=1)
+    values (6,-'2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10','new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+drop table part_change_various_various_date;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (STRING, CHAR, VARCHAR) --> BINARY
+--
+CREATE TABLE part_change_various_various_binary(insert_num int, c1 STRING, c2 CHAR(25), c3 VARCHAR(25), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_binary partition(part=1)
+    values(1, 'binary', 'binary',  'binary', 'original'),
+          (2, 'binary', 'binary',  'binary', 'original'),
+          (3, 'binary', 'binary',  'binary', 'original'),
+          (4, 'binary', 'binary',  'binary', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_binary replace columns (insert_num int, c1 BINARY, c2 BINARY, c3 BINARY, b STRING);
+
+insert into table part_change_various_various_binary partition(part=2)
+    values (5, 'binary', 'binary', 'binary', 'new');
+
+insert into table part_change_various_various_binary partition(part=1)
+    values (6,-'binary', 'binary', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+drop table part_change_various_various_binary;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_table.q
new file mode 100644
index 0000000..1028777
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vec_mapwork_table.q
@@ -0,0 +1,826 @@
+set hive.explain.user=true;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=true;
+SET hive.vectorized.use.row.serde.deserialize=false;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=true;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING);
+DESCRIBE FORMATTED table_add_int_permute_select;
+
+insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int);
+DESCRIBE FORMATTED table_add_int_permute_select;
+
+insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40);
+
+insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200);
+
+explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num;
+select insert_num,a,b,c from table_add_int_permute_select order by insert_num;
+select insert_num,c from table_add_int_permute_select order by insert_num;
+
+drop table table_add_int_permute_select;
+
+
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING);
+DESCRIBE FORMATTED table_add_int_string_permute_select;
+
+insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string);
+DESCRIBE FORMATTED table_add_int_string_permute_select;
+
+insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty');
+
+insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred');
+
+explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,c from table_add_int_string_permute_select order by insert_num;
+select insert_num,d from table_add_int_string_permute_select order by insert_num;
+
+drop table table_add_int_string_permute_select;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING);
+
+insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING);
+
+insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new');
+
+insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num;
+
+drop table table_change_string_group_double;
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING);
+
+insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new');
+insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num;
+
+drop table table_change_date_group_string_group_timestamp;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING);
+
+insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);DESCRIBE FORMATTED table_change_date_group_string_group_date;
+
+insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num;
+
+drop table table_change_date_group_string_group_date;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_varchar(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), c4 VARCHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_varchar_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_varchar_trunc replace columns (insert_num int, c1 VARCHAR(5), c2 VARCHAR(5), c3 VARCHAR(5), c4 VARCHAR(5), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_varchar_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (FLOAT, DOUBLE, DECIMAL), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_string(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_string
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, - 832222222, 255, 4957,'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_string
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_string;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_char(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_char
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3,  9000000000, -255, 4957,'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_char
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_char_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_char_trunc
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 832222222, -255, 4957, 'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_char_trunc replace columns (insert_num int, c1 CHAR(7), c2 CHAR(7), c3 CHAR(7), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_char_trunc
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_char_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_varchar(insert_num int, c1 float, c2 double, c3 decimal(38,18), b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_varchar
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_varchar
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_varchar_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_varchar_trunc
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_varchar_trunc replace columns (insert_num int, c1 VARCHAR(7), c2 VARCHAR(7), c3 VARCHAR(7), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_varchar_trunc
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_varchar_trunc;
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: STRING, (CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_string_group_string_group_string(insert_num int, c1 string, c2 string, c3 string, c4 string, b STRING);
+
+insert into table table_change_string_group_string_group_string
+    values (1, 'escapist', 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_string replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 VARCHAR(50), c4 CHAR(9), b STRING) ;
+
+insert into table table_change_string_group_string_group_string
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+drop table table_change_string_group_string_group_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: CHAR, (VARCHAR, VARCHAR trunc, STRING)
+--
+CREATE TABLE table_change_string_group_string_group_char(insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING);
+
+insert into table table_change_string_group_string_group_char
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_char replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(9), c3 STRING, b STRING) ;
+
+insert into table table_change_string_group_string_group_char
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+drop table table_change_string_group_string_group_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: VARCHAR, (CHAR, CHAR trunc, STRING)
+--
+CREATE TABLE table_change_string_group_string_group_varchar(insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING);
+
+insert into table table_change_string_group_string_group_varchar
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_varchar replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 STRING, b STRING) ;
+
+insert into table table_change_string_group_string_group_varchar
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+drop table table_change_string_group_string_group_varchar;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: TINYINT, (SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_tinyint(insert_num int, c1 tinyint, c2 tinyint, c3 tinyint, c4 tinyint, c5 tinyint, c6 tinyint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_tinyint
+    values (1, 45, 45, 45, 45, 45, 45, 'original'),
+           (2, -2, -2, -2, -2, -2, -2, 'original'),
+           (3, -255, -255, -255, -255, -255, -255, 'original'),
+           (4, 100, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_tinyint replace columns (insert_num int, c1 SMALLINT, c2 INT, c3 BIGINT, c4 decimal(38,18), c5 FLOAT, c6 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_tinyint
+    values (5, '774', '2031', '200', '12', '99', '0', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', '7', '6', 'new'),
+           (7, '256', '32768', '31889', '300', '444', '506', 'new'),
+           (8, '5555', '40000', '-719017797', '45', '55', '65', 'new'),
+           (9, '100', '5000', '5443', '22', '2', '-2', 'new'),
+           (10, '17', '90000', '754072151', '95', '20', '18', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_tinyint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: SMALLINT, (INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_smallint(insert_num int, c1 smallint, c2 smallint, c3 smallint, c4 smallint, c5 smallint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_smallint
+    values (1, 2031, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, -5000, 'original'),
+           (4, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_smallint replace columns (insert_num int, c1 INT, c2 BIGINT, c3 decimal(38,18), c4 FLOAT, c5 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_smallint
+    values (5, '774', '2031', '200', '12', '99', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', '7', 'new'),
+           (7, '256', '32768', '31889', '300', '444', 'new'),
+           (8, '5555', '40000', '-719017797', '45', '55', 'new'),
+           (9, '100', '5000', '5443', '22', '2', 'new'),
+           (10, '17', '90000', '754072151', '95', '20', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_smallint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: INT, (BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_int(insert_num int, c1 int, c2 int, c3 int, c4 int, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_int
+    values (1, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_int replace columns (insert_num int, c1 BIGINT, c2 decimal(38,18), c3 FLOAT, c4 DOUBLE,  b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_int
+    values (5, '774', '2031', '200', '12', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', 'new'),
+           (7, '256', '32768', '31889', '300', 'new'),
+           (8, '5555', '40000', '-719017797', '45', 'new'),
+           (9, '100', '5000', '5443', '22', 'new'),
+           (10, '17', '90000', '754072151', '95', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_int;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: BIGINT, (DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_bigint(insert_num int, c1 bigint, c2 bigint, c3 bigint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_bigint
+    values (1, 7203778961, 7203778961, 7203778961, 'original'),
+           (2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_bigint replace columns (insert_num int, c1 decimal(38,18), c2 FLOAT, c3 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_bigint
+    values (5, '774', '2031', '200', 'new'),
+           (6, '561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_bigint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: DECIMAL, (FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_decimal(insert_num int, c1 decimal(38,18), c2 decimal(38,18), b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_decimal
+    values (1, -29.0764, -29.0764, 'original'),
+           (2, 753.7028, 753.7028, 'original'),
+           (3, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_decimal replace columns (insert_num int, c1 float, c2 double, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_decimal
+    values (5, '7.74', '22.3', 'new'),
+           (6, '56.1431', '90.9', 'new'),
+           (7, '2.56', '25.6', 'new'),
+           (8, '555.5', '55.55', 'new'),
+           (9, '10.0', '0.100', 'new'),
+           (10, '1.7', '17.8888', 'new');
+
+explain
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_decimal;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: FLOAT, (DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_float(insert_num int, c1 float, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_float
+    values (1, -29.0764, 'original'),
+           (2, 753.7028, 'original'),
+           (3, -5000, 'original'),
+           (4, 52927714, 'original');
+
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_float replace columns (insert_num int, c1 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_float
+    values (5, '774', 'new'),
+           (6, '561431', 'new'),
+           (7, '256', 'new'),
+           (8, '5555', 'new'),
+           (9, '100', 'new'),
+           (10, '17', 'new');
+
+explain
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
+
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_float;
\ No newline at end of file


[20/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_table.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_table.q.out
new file mode 100644
index 0000000..50328d3
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_table.q.out
@@ -0,0 +1,4221 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_add_int_permute_select
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: drop table table_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: drop table table_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_add_int_string_permute_select
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c	d
+1	1	original	NULL	NULL
+10	6	new	200	two hundred
+2	2	original	NULL	NULL
+3	3	original	NULL	NULL
+4	4	original	NULL	NULL
+5	1	new	10	ten
+6	2	new	20	twenty
+7	3	new	30	thirty
+8	4	new	40	forty
+9	5	new	100	hundred
+PREHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	c	d
+1	1	NULL	NULL
+10	6	200	two hundred
+2	2	NULL	NULL
+3	3	NULL	NULL
+4	4	NULL	NULL
+5	1	10	ten
+6	2	20	twenty
+7	3	30	thirty
+8	4	40	forty
+9	5	100	hundred
+PREHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	d
+1	1	NULL
+10	6	two hundred
+2	2	NULL
+3	3	NULL
+4	4	NULL
+5	1	ten
+6	2	twenty
+7	3	thirty
+8	4	forty
+9	5	hundred
+PREHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	d
+1	NULL
+10	two hundred
+2	NULL
+3	NULL
+4	NULL
+5	ten
+6	twenty
+7	thirty
+8	forty
+9	hundred
+PREHOOK: query: drop table table_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: drop table table_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_string_group_double
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: double), c2 (type: double), c3 (type: double), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4
+              Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: double), _col2 (type: double), _col3 (type: double), _col4 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: double), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4
+          Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 383 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	b
+1	753.7028	753.7028	753.7028	original
+10	9250340.75	9250340.75	9250340.75	new
+2	-3651.672121	-3651.672121	-3651.672121	original
+3	-29.0764	-29.0764	-29.0764	original
+4	-10.3	-10.3	-10.3	original
+5	30.774	30.774	30.774	new
+6	20.31	20.31	20.31	new
+7	46114.284799488	46114.284799488	46114.284799488	new
+8	-66475.561431	-66475.561431	-66475.561431	new
+9	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table table_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: drop table table_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_date_group_string_group_timestamp
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: char(50)), _col3 (type: char(15)), _col4 (type: varchar(50)), _col5 (type: varchar(15)), _col6 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(15)), VALUE._col3 (type: varchar(50)), VALUE._col4 (type: varchar(15)), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 1194 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	6229-06-28 02:5	6229-06-28 02:54:28.970117179	6229-06-28 02:5	new
+9	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	5966-07-09 03:3	5966-07-09 03:30:50.597	5966-07-09 03:3	new
+PREHOOK: query: drop table table_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table table_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+c1                  	string              	                    
+c2                  	char(50)            	                    
+c3                  	char(15)            	                    
+c4                  	varchar(50)         	                    
+c5                  	varchar(15)         	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	3                   
+	rawDataSize         	195                 
+	totalSize           	198                 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_date_group_string_group_date
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: char(50)), _col3 (type: char(15)), _col4 (type: varchar(50)), _col5 (type: varchar(15)), _col6 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(15)), VALUE._col3 (type: varchar(50)), VALUE._col4 (type: varchar(15)), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 555 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table table_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: drop table table_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_numeric_group_string_group_multi_ints_string
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: string), c3 (type: string), c4 (type: string), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+10	17	90000	754072151	3289094	new
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+5	2000	72909	3244222	-93222	new
+6	1	200	2323322	5430907	new
+7	256	32768	31889	470614135	new
+8	5555	40000	-719017797	810662019	new
+9	100	5000	5443	0	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_numeric_group_string_group_multi_ints_char
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: char(50)), c2 (type: char(50)), c3 (type: char(50)), c4 (type: char(50)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: char(50)), _col2 (type: char(50)), _col3 (type: char(50)), _col4 (type: char(50)), _col5 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: char(50)), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(50)), VALUE._col3 (type: char(50)), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45                                    

<TRUNCATED>

[26/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..2a5fb24
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_part_all_complex.q.out
@@ -0,0 +1,726 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_struct1
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), s1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), _col3 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_various_various_struct2
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_to_various_various_struct4
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4


[17/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out
new file mode 100644
index 0000000..6f9b35c
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q.out
@@ -0,0 +1,3058 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	true	0004-09-22 18:26:29.519542222	original
+2	1	45	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		2007-02-09 05:17:29.368756876	original
+3	1	NULL	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	6229-06-28 02:54:28.970117179	original
+4	1	1	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	time will come	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_boolean
+            Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: boolean), c2 (type: boolean), c3 (type: boolean), c4 (type: boolean), c5 (type: boolean), c6 (type: boolean), c7 (type: boolean), c8 (type: boolean), c9 (type: boolean), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+              Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: boolean), _col3 (type: boolean), _col4 (type: boolean), _col5 (type: boolean), _col6 (type: boolean), _col7 (type: boolean), _col8 (type: boolean), _col9 (type: boolean), _col10 (type: boolean), _col11 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: boolean), VALUE._col2 (type: boolean), VALUE._col3 (type: boolean), VALUE._col4 (type: boolean), VALUE._col5 (type: boolean), VALUE._col6 (type: boolean), VALUE._col7 (type: boolean), VALUE._col8 (type: boolean), VALUE._col9 (type: boolean), VALUE._col10 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+          Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 580 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+PREHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+POSTHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	true	true	true	true	true	true	true	true	original
+2	1	true	true	true	true	true	true	true	false	true	original
+3	1	NULL	NULL	true	true	true	true	true	true	true	original
+4	1	true	NULL	true	true	true	true	true	true	true	original
+5	2	true	true	false	true	true	false	false	true	false	new
+6	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	true	NULL	new
+PREHOOK: query: drop table part_change_various_various_boolean
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: drop table part_change_various_various_boolean
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_tinyint
+            Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: tinyint), c2 (type: tinyint), c3 (type: tinyint), c4 (type: tinyint), c5 (type: tinyint), c6 (type: tinyint), c7 (type: tinyint), c8 (type: tinyint), c9 (type: tinyint), c10 (type: tinyint), c11 (type: tinyint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: tinyint), _col3 (type: tinyint), _col4 (type: tinyint), _col5 (type: tinyint), _col6 (type: tinyint), _col7 (type: tinyint), _col8 (type: tinyint), _col9 (type: tinyint), _col10 (type: tinyint), _col11 (type: tinyint), _col12 (type: tinyint), _col13 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: tinyint), VALUE._col2 (type: tinyint), VALUE._col3 (type: tinyint), VALUE._col4 (type: tinyint), VALUE._col5 (type: tinyint), VALUE._col6 (type: tinyint), VALUE._col7 (type: tinyint), VALUE._col8 (type: tinyint), VALUE._col9 (type: tinyint), VALUE._col10 (type: tinyint), VALUE._col11 (type: tinyint), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+PREHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	-48	-51	-66	-29	119	119	73	73	73	-43	original
+2	1	1	-24	-63	-25	-67	34	34	NULL	NULL	NULL	105	original
+3	1	0	NULL	-66	-38	30	85	85	1	1	1	84	original
+4	1	1	NULL	87	6	34	36	36	-77	-77	-77	60	original
+5	2	23	71	127	1	NULL	-60	68	NULL	NULL	40	93	new
+6	1	NULL	85	-126	NULL	91	113	-28	-63	0	8	NULL	new
+PREHOOK: query: drop table part_change_various_various_tinyint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: drop table part_change_various_various_tinyint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_smallint
+            Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: smallint), c2 (type: smallint), c3 (type: smallint), c4 (type: smallint), c5 (type: smallint), c6 (type: smallint), c7 (type: smallint), c8 (type: smallint), c9 (type: smallint), c10 (type: smallint), c11 (type: smallint), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: smallint), _col3 (type: smallint), _col4 (type: smallint), _col5 (type: smallint), _col6 (type: smallint), _col7 (type: smallint), _col8 (type: smallint), _col9 (type: smallint), _col10 (type: smallint), _col11 (type: smallint), _col12 (type: smallint), _col13 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: smallint), VALUE._col2 (type: smallint), VALUE._col3 (type: smallint), VALUE._col4 (type: smallint), VALUE._col5 (type: smallint), VALUE._col6 (type: smallint), VALUE._col7 (type: smallint), VALUE._col8 (type: smallint), VALUE._col9 (type: smallint), VALUE._col10 (type: smallint), VALUE._col11 (type: smallint), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 622 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+PREHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+POSTHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	7373	-32578	-29	119	119	-2999	-2999	-2999	-11819	original
+2	1	1	100	25025	29415	-3651	-19422	-19422	NULL	NULL	NULL	29801	original
+3	1	0	72	-32578	-27686	30	-939	-939	1	1	1	-8620	original
+4	1	1	-90	14935	12294	-19422	9764	9764	5299	5299	5299	-17092	original
+5	2	-30486	15230	3117	1	-117	-7131	20227	-24858	-28771	NULL	NULL	new
+6	1	NULL	NULL	-4844	15507	91	22385	-28	-12268	0	NULL	NULL	new
+PREHOOK: query: drop table part_change_various_various_smallint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: drop table part_change_various_various_smallint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_int
+            Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), c1 (type: int), c2 (type: int), c3 (type: int), c4 (type: int), c5 (type: int), c6 (type: int), c7 (type: int), c8 (type: int), c9 (type: int), c10 (type: int), c11 (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+              Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: int), _col3 (type: int), _col4 (type: int), _col5 (type: int), _col6 (type: int), _col7 (type: int), _col8 (type: int), _col9 (type: int), _col10 (type: int), _col11 (type: int), _col12 (type: int), _col13 (type: string)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: int), VALUE._col2 (type: int), VALUE._col3 (type: int), VALUE._col4 (type: int), VALUE._col5 (type: int), VALUE._col6 (type: int), VALUE._col7 (type: int), VALUE._col8 (type: int), VALUE._col9 (type: int), VALUE._col10 (type: int), VALUE._col11 (type: int), VALUE._col12 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13
+          Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 639 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+PREHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+POSTHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	1	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-1888628267	original
+2	1	1	100	NULL	1903063783	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	1272503892	original
+4	1	1	-90	NULL	3289094	46114	9250340	9250340	5299	5299	5299	1021033788	original
+5	2	560930	-1281818	127	1	84269672	-60	27094665	-36016110	-182	3244222	561431	new
+6	1	NULL	NULL	NULL	-167	91	113	-164341325	-134237413	0	6229	NULL	new
+PREHOOK: query: drop table part_change_various_various_int
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: drop table part_change_various_various_int
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	true	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	true	100	NULL	NULL	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	true	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	1998287.3541	1998287.3541             	1998287.3541	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_bigint
+            Statistics: Num rows: 6 Data size: 682 Basic stats: COMPLETE Column st

<TRUNCATED>

[06/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part.q.out
new file mode 100644
index 0000000..24600d9
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vecrow_mapwork_part.q.out
@@ -0,0 +1,3999 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_permute_select add columns(c int)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=2)
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_add_int_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_permute_select partition(part=1)
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_add_int_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=11)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=11)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=10 width=11)
+                default@part_add_int_permute_select,part_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Input: default@part_add_int_permute_select@part=1
+PREHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Input: default@part_add_int_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: drop table part_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_permute_select
+PREHOOK: Output: default@part_add_int_permute_select
+POSTHOOK: query: drop table part_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_permute_select
+POSTHOOK: Output: default@part_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE part_add_int_string_permute_select(insert_num int, a INT, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table part_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED part_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Partition Information	 	 
+# col_name            	data_type           	comment             
+	 	 
+part                	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=2)
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=2
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: query: insert into table part_add_int_string_permute_select partition(part=1)
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_int_string_permute_select PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=15)
+          Output:["_col0","_col1","_col2","_col3"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=15)
+              Output:["_col0","_col1","_col2","_col3"]
+              TableScan [TS_0] (rows=10 width=15)
+                default@part_add_int_string_permute_select,part_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,part,a,b from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b
+1	1	1	original
+10	1	6	new
+2	1	2	original
+3	1	3	original
+4	1	4	original
+5	2	1	new
+6	2	2	new
+7	2	3	new
+8	2	4	new
+9	1	5	new
+PREHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c
+1	1	1	original	NULL
+10	1	6	new	NULL
+2	1	2	original	NULL
+3	1	3	original	NULL
+4	1	4	original	NULL
+5	2	1	new	10
+6	2	2	new	20
+7	2	3	new	30
+8	2	4	new	40
+9	1	5	new	NULL
+PREHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,b,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	b	c	d
+1	1	1	original	NULL	NULL
+10	1	6	new	NULL	NULL
+2	1	2	original	NULL	NULL
+3	1	3	original	NULL	NULL
+4	1	4	original	NULL	NULL
+5	2	1	new	10	ten
+6	2	2	new	20	twenty
+7	2	3	new	30	thirty
+8	2	4	new	40	forty
+9	1	5	new	NULL	NULL
+PREHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,c,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	c	d
+1	1	1	NULL	NULL
+10	1	6	NULL	NULL
+2	1	2	NULL	NULL
+3	1	3	NULL	NULL
+4	1	4	NULL	NULL
+5	2	1	10	ten
+6	2	2	20	twenty
+7	2	3	30	thirty
+8	2	4	40	forty
+9	1	5	NULL	NULL
+PREHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,a,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	a	d
+1	1	1	NULL
+10	1	6	NULL
+2	1	2	NULL
+3	1	3	NULL
+4	1	4	NULL
+5	2	1	ten
+6	2	2	twenty
+7	2	3	thirty
+8	2	4	forty
+9	1	5	NULL
+PREHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	c
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	10
+6	2	20
+7	2	30
+8	2	40
+9	1	NULL
+PREHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Input: default@part_add_int_string_permute_select@part=1
+PREHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,d from part_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=1
+POSTHOOK: Input: default@part_add_int_string_permute_select@part=2
+#### A masked pattern was here ####
+insert_num	part	d
+1	1	NULL
+10	1	NULL
+2	1	NULL
+3	1	NULL
+4	1	NULL
+5	2	ten
+6	2	twenty
+7	2	thirty
+8	2	forty
+9	1	NULL
+PREHOOK: query: drop table part_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_int_string_permute_select
+PREHOOK: Output: default@part_add_int_string_permute_select
+POSTHOOK: query: drop table part_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_int_string_permute_select
+POSTHOOK: Output: default@part_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE part_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=2)
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_string_group_double@part=2
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: query: insert into table part_change_string_group_double partition(part=1)
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_string_group_double@part=1
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_string_group_double PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=38)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=38)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=38)
+                default@part_change_string_group_double,part_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Input: default@part_change_string_group_double@part=1
+PREHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,b from part_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Input: default@part_change_string_group_double@part=1
+POSTHOOK: Input: default@part_change_string_group_double@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	b
+1	1	753.7028	753.7028	753.7028	original
+10	1	9250340.75	9250340.75	9250340.75	new
+2	1	-3651.672121	-3651.672121	-3651.672121	original
+3	1	-29.0764	-29.0764	-29.0764	original
+4	1	-10.3	-10.3	-10.3	original
+5	2	30.774	30.774	30.774	new
+6	2	20.31	20.31	20.31	new
+7	2	46114.284799488	46114.284799488	46114.284799488	new
+8	2	-66475.561431	-66475.561431	-66475.561431	new
+9	1	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table part_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_string_group_double
+PREHOOK: Output: default@part_change_string_group_double
+POSTHOOK: query: drop table part_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_string_group_double
+POSTHOOK: Output: default@part_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=2)
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_timestamp partition(part=1)
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_timestamp PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=132)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=132)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+              TableScan [TS_0] (rows=9 width=132)
+                default@part_change_date_group_string_group_timestamp,part_change_date_group_string_group_timestamp,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	1	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	1	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	2	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	2	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	1	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	NULL	6229-06-28 02:54:28.970117179	NULL	new
+9	1	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	NULL	5966-07-09 03:30:50.597	NULL	new
+PREHOOK: query: drop table part_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_timestamp
+PREHOOK: Output: default@part_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table part_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@part_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE part_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=1)
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: query: insert into table part_change_date_group_string_group_date partition(part=2)
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_date_group_string_group_date@part=2
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_date_group_string_group_date PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=9 width=61)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=9 width=61)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7"]
+              TableScan [TS_0] (rows=9 width=61)
+                default@part_change_date_group_string_group_date,part_change_date_group_string_group_date,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=1
+PREHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,b from part_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=1
+POSTHOOK: Input: default@part_change_date_group_string_group_date@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	b
+1	1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	1	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	1	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	2	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	2	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	2	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	2	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table part_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_date_group_string_group_date
+PREHOOK: Output: default@part_change_date_group_string_group_date
+POSTHOOK: query: drop table part_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_date_group_string_group_date
+POSTHOOK: Output: default@part_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_string partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_string PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@part_change_numeric_group_string_group_multi_ints_string,part_change_numeric_group_string_group_multi_ints_string,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=1
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+10	1	17	NULL	754072151	3289094	new
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+5	2	2000	72909	3244222	-93222	new
+6	2	1	200	2323322	5430907	new
+7	2	256	32768	31889	470614135	new
+8	2	5555	40000	-719017797	810662019	new
+9	1	100	5000	5443	0	new
+PREHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE part_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part=1)
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	b
+1	1	45	1000	483777	-23866739993	original
+2	1	-2	-6737	56	28899333	original
+3	1	NULL	4957	832222222	9000000000	original
+4	1	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table part_change_numeric_group_string_group_multi_ints_char partition(part)
+    values (5, '2000', '72909', '3244222', '-93222', 'new', 2),
+           (6, '1', '200', '2323322', '5430907', 'new', 2),
+           (7, '256', '32768', '31889', '470614135', 'new', 2),
+           (8, '5555', '40000', '-719017797', '810662019', 'new', 2),
+           (9, '100', '5000', '5443', '0', 'new', 1),
+           (10, '17', '90000', '754072151', '3289094', 'new', 1)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+POSTHOOK: Output: default@part_change_numeric_group_string_group_multi_ints_char@part=2
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_numeric_group_string_group_multi_ints_char PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@part_change_numeric_group_string_group_multi_ints_char,part_change_numeric_group_string_group_multi_ints_char,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=1
+PREHOOK: Input: default@part_change_numeric_group_string_group_multi_ints_char@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,b from part_change_numeric_group_stri

<TRUNCATED>

[08/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_primitive.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_primitive.q.out
new file mode 100644
index 0000000..ea798f9
--- /dev/null
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_vec_mapwork_part_all_primitive.q.out
@@ -0,0 +1,2738 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	true	0004-09-22 18:26:29.519542222	original
+2	1	45	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		2007-02-09 05:17:29.368756876	original
+3	1	NULL	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	6229-06-28 02:54:28.970117179	original
+4	1	1	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	time will come	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__2
+PREHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__2
+POSTHOOK: Output: default@part_change_various_various_boolean@part=2
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: query: insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@part_change_various_various_boolean@part=1
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_boolean PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=96)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=96)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"]
+              TableScan [TS_0] (rows=6 width=96)
+                default@part_change_various_various_boolean,part_change_various_various_boolean,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Input: default@part_change_various_various_boolean@part=1
+PREHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Input: default@part_change_various_various_boolean@part=1
+POSTHOOK: Input: default@part_change_various_various_boolean@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	b
+1	1	NULL	true	true	true	true	true	true	true	true	original
+2	1	true	true	true	true	true	true	true	false	true	original
+3	1	NULL	NULL	true	true	true	true	true	true	true	original
+4	1	true	NULL	true	true	true	true	true	true	true	original
+5	2	NULL	NULL	false	NULL	NULL	false	false	NULL	false	new
+6	1	NULL	NULL	NULL	NULL	NULL	NULL	NULL	true	NULL	new
+PREHOOK: query: drop table part_change_various_various_boolean
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_boolean
+PREHOOK: Output: default@part_change_various_various_boolean
+POSTHOOK: query: drop table part_change_various_various_boolean
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_boolean
+POSTHOOK: Output: default@part_change_various_various_boolean
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__4
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__4
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	2000	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	1000	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	NULL	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	NULL	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__5
+PREHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__5
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=2
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__6
+PREHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: query: insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__6
+POSTHOOK: Output: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_tinyint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=97)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=97)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=97)
+                default@part_change_various_various_tinyint,part_change_various_various_tinyint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Input: default@part_change_various_various_tinyint@part=1
+PREHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=1
+POSTHOOK: Input: default@part_change_various_various_tinyint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	-48	-51	-66	-29	119	119	73	73	73	-43	original
+2	1	NULL	-24	-63	-25	-67	34	34	NULL	NULL	NULL	105	original
+3	1	0	NULL	-66	-38	30	85	85	1	1	1	84	original
+4	1	NULL	NULL	87	6	34	36	36	-77	-77	-77	60	original
+5	2	23	71	127	1	NULL	-60	68	NULL	NULL	40	93	new
+6	1	NULL	85	-126	NULL	91	113	-28	-63	0	8	NULL	new
+PREHOOK: query: drop table part_change_various_various_tinyint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_tinyint
+PREHOOK: Output: default@part_change_various_various_tinyint
+POSTHOOK: query: drop table part_change_various_various_tinyint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_tinyint
+POSTHOOK: Output: default@part_change_various_various_tinyint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	72909	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	100	483777	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	3244222	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	-90	754072151	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@part_change_various_various_smallint@part=2
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: query: insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@part_change_various_various_smallint@part=1
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_smallint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=103)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=103)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=103)
+                default@part_change_various_various_smallint,part_change_various_various_smallint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Input: default@part_change_various_various_smallint@part=1
+PREHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Input: default@part_change_various_various_smallint@part=1
+POSTHOOK: Input: default@part_change_various_various_smallint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	7373	-32578	-29	119	119	-2999	-2999	-2999	-11819	original
+2	1	NULL	100	25025	29415	-3651	-19422	-19422	NULL	NULL	NULL	29801	original
+3	1	0	72	-32578	-27686	30	-939	-939	1	1	1	-8620	original
+4	1	NULL	-90	14935	12294	-19422	9764	9764	5299	5299	5299	-17092	original
+5	2	-30486	15230	3117	1	-117	-7131	20227	-24858	-28771	NULL	NULL	new
+6	1	NULL	NULL	-4844	15507	91	22385	-28	-12268	0	NULL	NULL	new
+PREHOOK: query: drop table part_change_various_various_smallint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_smallint
+PREHOOK: Output: default@part_change_various_various_smallint
+POSTHOOK: query: drop table part_change_various_various_smallint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_smallint
+POSTHOOK: Output: default@part_change_various_various_smallint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	100	NULL	-23866739993	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	5299	5299                     	5299	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@part_change_various_various_int@part=2
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: query: insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@part_change_various_various_int@part=1
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_int PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=106)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=106)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=106)
+                default@part_change_various_various_int,part_change_various_various_int,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Input: default@part_change_various_various_int@part=1
+PREHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Input: default@part_change_various_various_int@part=1
+POSTHOOK: Input: default@part_change_various_various_int@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-1888628267	original
+2	1	NULL	100	NULL	1903063783	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	1272503892	original
+4	1	NULL	-90	NULL	3289094	46114	9250340	9250340	5299	5299	5299	1021033788	original
+5	2	560930	-1281818	127	1	84269672	-60	27094665	-36016110	-182	3244222	561431	new
+6	1	NULL	NULL	NULL	-167	91	113	-164341325	-134237413	0	6229	NULL	new
+PREHOOK: query: drop table part_change_various_various_int
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_int
+PREHOOK: Output: default@part_change_various_various_int
+POSTHOOK: query: drop table part_change_various_various_int
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_int
+POSTHOOK: Output: default@part_change_various_various_int
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29.0764	4.70614135E8	470614135.000000000000000000	-2999	-2999                    	-2999	0004-09-22 18:26:29.519542222	original
+2	1	NULL	100	NULL	NULL	-3651.672	46114.284799488	46114.284799488000000000		                         		2007-02-09 05:17:29.368756876	original
+3	1	false	72	NULL	-93222	30.774	-66475.561431	-66475.561431000000000000	1	1                        	1	6229-06-28 02:54:28.970117179	original
+4	1	NULL	-90	NULL	3289094	46114.285	9250340.75	9250340.750000000000000000	1998287.3541	1998287.3541             	1998287.3541	2002-05-10 05:29:48.990818073	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@part_change_various_various_bigint@part=2
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c1 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c10 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c11 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c6 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c7 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c8 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).c9 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=2).insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: query: insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@part_change_various_various_bigint@part=1
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c7 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col8, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c8 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col9, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).c9 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col10, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_bigint PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6	_col7	_col8	_col9	_col10	_col11	_col12
+PREHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2 vectorized
+      File Output Operator [FS_8]
+        Select Operator [SEL_7] (rows=6 width=113)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+        <-Map 1 [SIMPLE_EDGE] vectorized
+          SHUFFLE [RS_6]
+            Select Operator [SEL_5] (rows=6 width=113)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13"]
+              TableScan [TS_0] (rows=6 width=113)
+                default@part_change_various_various_bigint,part_change_various_various_bigint,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","b"]
+
+PREHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Input: default@part_change_various_various_bigint@part=1
+PREHOOK: Input: default@part_change_various_various_bigint@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Input: default@part_change_various_various_bigint@part=1
+POSTHOOK: Input: default@part_change_various_various_bigint@part=2
+#### A masked pattern was here ####
+insert_num	part	c1	c2	c3	c4	c5	c6	c7	c8	c9	c10	c11	b
+1	1	NULL	NULL	NULL	3244222	-29	470614135	470614135	-2999	-2999	-2999	-62018170411	original
+2	1	NULL	100	NULL	NULL	-3651	46114	46114	NULL	NULL	NULL	1171027049	original
+3	1	0	72	NULL	-93222	30	-66475	-66475	1	1	1	134416490068	original
+4	1	NULL	-90	NULL	3289094	46114	9250340	9250340	1998287	NULL	NULL	1021033788	original
+5	2	5573199346255528403	71	151775655	1	131	-60	6275638713485623898	-230	-695025	519542222	-29	new
+6	1	NULL	NULL	-126	NULL	91	113	-28	-63	0	3244222	NULL	new
+PREHOOK: query: drop table part_change_various_various_bigint
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_bigint
+PREHOOK: Output: default@part_change_various_various_bigint
+POSTHOOK: query: drop table part_change_various_various_bigint
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_bigint
+POSTHOOK: Output: default@part_change_various_various_bigint
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_float
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_float
+PREHOOK: query: insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@part_change_various_various_float@part=1
+POSTHOOK: query: insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@part_change_various_various_float@part=1
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col13, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c1 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c10 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col11, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c11 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col12, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c2 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c3 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c4 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c5 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: part_change_various_various_float PARTITION(part=1).c6 EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: part_change

<TRUNCATED>

[15/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_fetchwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_fetchwork_table.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_fetchwork_table.q.out
deleted file mode 100644
index f849004..0000000
--- a/ql/src/test/results/clientpositive/tez/schema_evol_text_fetchwork_table.q.out
+++ /dev/null
@@ -1,298 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	new
-1	original
-2	new
-2	original
-3	new
-3	original
-4	new
-4	original
-5	new
-6	new
-PREHOOK: query: select a,b,c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c
-1	new	10
-1	original	NULL
-2	new	20
-2	original	NULL
-3	new	30
-3	original	NULL
-4	new	40
-4	original	NULL
-5	new	100
-6	new	200
-PREHOOK: query: select a,b,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-5	new	100	hundred
-6	new	200	two hundred
-PREHOOK: query: select a,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	c	d
-1	10	ten
-1	NULL	NULL
-2	20	twenty
-2	NULL	NULL
-3	30	thirty
-3	NULL	NULL
-4	40	forty
-4	NULL	NULL
-5	100	hundred
-6	200	two hundred
-PREHOOK: query: select a,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	d
-1	NULL
-1	ten
-2	NULL
-2	twenty
-3	NULL
-3	thirty
-4	NULL
-4	forty
-5	hundred
-6	two hundred
-PREHOOK: query: select c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-c
-10
-100
-20
-200
-30
-40
-NULL
-NULL
-NULL
-NULL
-PREHOOK: query: select d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-d
-NULL
-NULL
-NULL
-NULL
-forty
-hundred
-ten
-thirty
-twenty
-two hundred
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table2
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table2
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: DROP TABLE table1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: DROP TABLE table2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: DROP TABLE table2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_mapwork_table.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_mapwork_table.q.out
deleted file mode 100644
index f849004..0000000
--- a/ql/src/test/results/clientpositive/tez/schema_evol_text_mapwork_table.q.out
+++ /dev/null
@@ -1,298 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table table1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	new
-1	original
-2	new
-2	original
-3	new
-3	original
-4	new
-4	original
-5	new
-6	new
-PREHOOK: query: select a,b,c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c
-1	new	10
-1	original	NULL
-2	new	20
-2	original	NULL
-3	new	30
-3	original	NULL
-4	new	40
-4	original	NULL
-5	new	100
-6	new	200
-PREHOOK: query: select a,b,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-5	new	100	hundred
-6	new	200	two hundred
-PREHOOK: query: select a,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	c	d
-1	10	ten
-1	NULL	NULL
-2	20	twenty
-2	NULL	NULL
-3	30	thirty
-3	NULL	NULL
-4	40	forty
-4	NULL	NULL
-5	100	hundred
-6	200	two hundred
-PREHOOK: query: select a,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	d
-1	NULL
-1	ten
-2	NULL
-2	twenty
-3	NULL
-3	thirty
-4	NULL
-4	forty
-5	hundred
-6	two hundred
-PREHOOK: query: select c from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select c from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-c
-10
-100
-20
-200
-30
-40
-NULL
-NULL
-NULL
-NULL
-PREHOOK: query: select d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-d
-NULL
-NULL
-NULL
-NULL
-forty
-hundred
-ten
-thirty
-twenty
-two hundred
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table2(a smallint, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table table2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2
-PREHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table2
-POSTHOOK: query: insert into table table2 values(5000, 'new'),(90000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table2
-POSTHOOK: Lineage: table2.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table2.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table2
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table2
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: DROP TABLE table1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: DROP TABLE table2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table2
-PREHOOK: Output: default@table2
-POSTHOOK: query: DROP TABLE table2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table2
-POSTHOOK: Output: default@table2

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_part.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_part.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_part.q.out
deleted file mode 100644
index 44ce24e..0000000
--- a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_part.q.out
+++ /dev/null
@@ -1,642 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, FetchWork, Partitioned
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: TEXT, Non-Vectorized, FetchWork, Partitioned
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... STATIC INSERT
----
-CREATE TABLE partitioned1(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned1
-PREHOOK: Output: default@partitioned1
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@partitioned1@part=2
-POSTHOOK: query: insert into table partitioned1 partition(part=2) values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@partitioned1@part=2
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=2).d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@partitioned1@part=1
-POSTHOOK: query: insert into table partitioned1 partition(part=1) values(5, 'new', 100, 'hundred'),(6, 'new', 200, 'two hundred')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@partitioned1@part=1
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned1 PARTITION(part=1).d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
-1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... STATIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned2(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned2
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned2 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@partitioned2@part=2
-POSTHOOK: query: insert into table partitioned2 partition(part=2) values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@partitioned2@part=2
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=2).b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@partitioned2@part=1
-POSTHOOK: query: insert into table partitioned2 partition(part=1) values(5000, 'new'),(90000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@partitioned2@part=1
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned2 PARTITION(part=1).b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select part,a,b from partitioned2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned2
-PREHOOK: Input: default@partitioned2@part=1
-PREHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Input: default@partitioned2@part=1
-POSTHOOK: Input: default@partitioned2@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: --
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: --
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS ... DYNAMIC INSERT
----
-CREATE TABLE partitioned3(a INT, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__7
-PREHOOK: Output: default@partitioned3@part=1
-POSTHOOK: query: insert into table partitioned3 partition(part=1) values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__7
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@partitioned3
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
-alter table partitioned3 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@partitioned3
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__8
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: insert into table partitioned3 partition(part) values(1, 'new', 10, 'ten', 2),(2, 'new', 20, 'twenty', 2), (3, 'new', 30, 'thirty', 2),(4, 'new', 40, 'forty', 2),
-    (5, 'new', 100, 'hundred', 1),(6, 'new', 200, 'two hundred', 1)
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__8
-POSTHOOK: Output: default@partitioned3@part=1
-POSTHOOK: Output: default@partitioned3@part=2
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=1).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).a EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).c EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned3 PARTITION(part=2).d SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3	_col4
-PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
-select part,a,b from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1	original
-1	2	original
-1	3	original
-1	4	original
-1	5	new
-1	6	new
-2	1	new
-2	2	new
-2	3	new
-2	4	new
-PREHOOK: query: select part,a,b,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c
-1	1	original	NULL
-1	2	original	NULL
-1	3	original	NULL
-1	4	original	NULL
-1	5	new	NULL
-1	6	new	NULL
-2	1	new	10
-2	2	new	20
-2	3	new	30
-2	4	new	40
-PREHOOK: query: select part,a,b,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	b	c	d
-1	1	original	NULL	NULL
-1	2	original	NULL	NULL
-1	3	original	NULL	NULL
-1	4	original	NULL	NULL
-1	5	new	NULL	NULL
-1	6	new	NULL	NULL
-2	1	new	10	ten
-2	2	new	20	twenty
-2	3	new	30	thirty
-2	4	new	40	forty
-PREHOOK: query: select part,a,c,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,c,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	c	d
-1	1	NULL	NULL
-1	2	NULL	NULL
-1	3	NULL	NULL
-1	4	NULL	NULL
-1	5	NULL	NULL
-1	6	NULL	NULL
-2	1	10	ten
-2	2	20	twenty
-2	3	30	thirty
-2	4	40	forty
-PREHOOK: query: select part,a,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	a	d
-1	1	NULL
-1	2	NULL
-1	3	NULL
-1	4	NULL
-1	5	NULL
-1	6	NULL
-2	1	ten
-2	2	twenty
-2	3	thirty
-2	4	forty
-PREHOOK: query: select part,c from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,c from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	c
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	10
-2	20
-2	30
-2	40
-PREHOOK: query: select part,d from partitioned1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned1
-PREHOOK: Input: default@partitioned1@part=1
-PREHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,d from partitioned1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Input: default@partitioned1@part=1
-POSTHOOK: Input: default@partitioned1@part=2
-#### A masked pattern was here ####
-part	d
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-1	NULL
-2	forty
-2	ten
-2	thirty
-2	twenty
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN ... DYNAMIC INSERT
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE partitioned4(a smallint, b STRING) PARTITIONED BY(part INT) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__9
-PREHOOK: Output: default@partitioned4@part=1
-POSTHOOK: query: insert into table partitioned4 partition(part=1) values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__9
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@partitioned4
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
-alter table partitioned4 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Output: default@partitioned4
-PREHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__10
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: insert into table partitioned4 partition(part) values(72909, 'new', 2),(200, 'new', 2), (32768, 'new', 2),(40000, 'new', 2),
-    (5000, 'new', 1),(90000, 'new', 1)
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__10
-POSTHOOK: Output: default@partitioned4@part=1
-POSTHOOK: Output: default@partitioned4@part=2
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=1).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).a EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: partitioned4 PARTITION(part=2).b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select part,a,b from partitioned4
-PREHOOK: type: QUERY
-PREHOOK: Input: default@partitioned4
-PREHOOK: Input: default@partitioned4@part=1
-PREHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-POSTHOOK: query: select part,a,b from partitioned4
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Input: default@partitioned4@part=1
-POSTHOOK: Input: default@partitioned4@part=2
-#### A masked pattern was here ####
-part	a	b
-1	1000	original
-1	3	original
-1	4	original
-1	5000	new
-1	6737	original
-1	NULL	new
-2	200	new
-2	32768	new
-2	40000	new
-2	72909	new
-PREHOOK: query: DROP TABLE partitioned1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned1
-PREHOOK: Output: default@partitioned1
-POSTHOOK: query: DROP TABLE partitioned1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned1
-POSTHOOK: Output: default@partitioned1
-PREHOOK: query: DROP TABLE partitioned2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned2
-PREHOOK: Output: default@partitioned2
-POSTHOOK: query: DROP TABLE partitioned2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned2
-POSTHOOK: Output: default@partitioned2
-PREHOOK: query: DROP TABLE partitioned3
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned3
-PREHOOK: Output: default@partitioned3
-POSTHOOK: query: DROP TABLE partitioned3
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned3
-POSTHOOK: Output: default@partitioned3
-PREHOOK: query: DROP TABLE partitioned4
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@partitioned4
-PREHOOK: Output: default@partitioned4
-POSTHOOK: query: DROP TABLE partitioned4
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@partitioned4
-POSTHOOK: Output: default@partitioned4

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_table.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_table.q.out
deleted file mode 100644
index 4003c20..0000000
--- a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_fetchwork_table.q.out
+++ /dev/null
@@ -1,297 +0,0 @@
-PREHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- SORT_QUERY_RESULTS
---
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
---
---
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	original
-2	original
-3	original
-4	original
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-_col0	_col1	_col2	_col3
-PREHOOK: query: select a,b,c,d from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: table1.e SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
-_col0	_col1	_col2	_col3	_col4
-PREHOOK: query: select a,b,c,d,e from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d,e from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b	c	d	e
-1	new	10	ten	NULL
-1	original	NULL	NULL	NULL
-2	new	20	twenty	NULL
-2	original	NULL	NULL	NULL
-3	new	30	thirty	NULL
-3	original	NULL	NULL	NULL
-4	new	40	forty	NULL
-4	original	NULL	NULL	NULL
-5	new	100	hundred	another1
-6	new	200	two hundred	another2
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@table3
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
---
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-3	original
-4	original
-6737	original
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-6737	original
-72909	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
-PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table3.e SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: DROP TABLE table1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: DROP TABLE table2
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE table2
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE table3
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: DROP TABLE table3
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3


[24/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_table.q.out b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_table.q.out
index 4003c20..7a7e068 100644
--- a/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_table.q.out
+++ b/ql/src/test/results/clientpositive/schema_evol_text_nonvec_mapwork_table.q.out
@@ -1,297 +1,4193 @@
 PREHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
 --
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
+PREHOOK: Output: default@table_add_int_permute_select
 POSTHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	original
-2	original
-3	original
-4	original
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
 PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
 POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3
-PREHOOK: query: select a,b,c,d from table1
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_add_int_permute_select
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 111 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
+PREHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
+POSTHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: table1.e SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
-_col0	_col1	_col2	_col3	_col4
-PREHOOK: query: select a,b,c,d,e from table1
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
+PREHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d,e from table1
+POSTHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
+POSTHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-a	b	c	d	e
-1	new	10	ten	NULL
-1	original	NULL	NULL	NULL
-2	new	20	twenty	NULL
-2	original	NULL	NULL	NULL
-3	new	30	thirty	NULL
-3	original	NULL	NULL	NULL
-4	new	40	forty	NULL
-4	original	NULL	NULL	NULL
-5	new	100	hundred	another1
-6	new	200	two hundred	another2
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: drop table table_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: drop table table_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
 --
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@table3
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
 --
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-3	original
-4	original
-6737	original
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-6737	original
-72909	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table3.e SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_add_int_string_permute_select
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), a (type: int), b (type: string)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 155 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c	d
+1	1	original	NULL	NULL
+10	6	new	200	two hundred
+2	2	original	NULL	NULL
+3	3	original	NULL	NULL
+4	4	original	NULL	NULL
+5	1	new	10	ten
+6	2	new	20	twenty
+7	3	new	30	thirty
+8	4	new	40	forty
+9	5	new	100	hundred
+PREHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	c	d
+1	1	NULL	NULL
+10	6	200	two hundred
+2	2	NULL	NULL
+3	3	NULL	NULL
+4	4	NULL	NULL
+5	1	10	ten
+6	2	20	twenty
+7	3	30	thirty
+8	4	40	forty
+9	5	100	hundred
+PREHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	d
+1	1	NULL
+10	6	two hundred
+2	2	NULL
+3	3	NULL
+4	4	NULL
+5	1	ten
+6	2	twenty
+7	3	thirty
+8	4	forty
+9	5	hundred
+PREHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	d
+1	NULL
+10	two hundred
+2	NULL
+3	NULL
+4	NULL
+5	ten
+6	twenty
+7	thirty
+8	forty
+9	hundred
+PREHOOK: query: drop table table_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: drop table table_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_string_group_double
+            Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: double), c2 (type: double), c3 (type: double), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4
+              Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: double), _col2 (type: double), _col3 (type: double), _col4 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: double), VALUE._col1 (type: double), VALUE._col2 (type: double), VALUE._col3 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4
+          Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 550 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	b
+1	753.7028	753.7028	753.7028	original
+10	9250340.75	9250340.75	9250340.75	new
+2	-3651.672121	-3651.672121	-3651.672121	original
+3	-29.0764	-29.0764	-29.0764	original
+4	-10.3	-10.3	-10.3	original
+5	30.774	30.774	30.774	new
+6	20.31	20.31	20.31	new
+7	46114.284799488	46114.284799488	46114.284799488	new
+8	-66475.561431	-66475.561431	-66475.561431	new
+9	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table table_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: drop table table_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_date_group_string_group_timestamp
+            Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: char(50)), _col3 (type: char(15)), _col4 (type: varchar(50)), _col5 (type: varchar(15)), _col6 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(15)), VALUE._col3 (type: varchar(50)), VALUE._col4 (type: varchar(15)), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 1326 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	6229-06-28 02:5	6229-06-28 02:54:28.970117179	6229-06-28 02:5	new
+9	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	5966-07-09 03:3	5966-07-09 03:30:50.597	5966-07-09 03:3	new
+PREHOOK: query: drop table table_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table table_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+c1                  	string              	                    
+c2                  	char(50)            	                    
+c3                  	char(15)            	                    
+c4                  	varchar(50)         	                    
+c5                  	varchar(15)         	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	3                   
+	rawDataSize         	195                 
+	totalSize           	198                 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_date_group_string_group_date
+            Statistics: Num rows: 9 Data size: 825 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: char(50)), c3 (type: char(15)), c4 (type: varchar(50)), c5 (type: varchar(15)), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+              Statistics: Num rows: 9 Data size: 825 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 9 Data size: 825 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: char(50)), _col3 (type: char(15)), _col4 (type: varchar(50)), _col5 (type: varchar(15)), _col6 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: char(50)), VALUE._col2 (type: char(15)), VALUE._col3 (type: varchar(50)), VALUE._col4 (type: varchar(15)), VALUE._col5 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+          Statistics: Num rows: 9 Data size: 825 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 9 Data size: 825 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table table_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: drop table table_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: table_change_numeric_group_string_group_multi_ints_string
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), c1 (type: string), c2 (type: string), c3 (type: string), c4 (type: string), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+              Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 10 Data size: 330 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+10	17	90000	754072151	3289094	new
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+5	2000	72909	3244222	-93222	new
+6	1	200	2323322	5430907	new
+7	256	32768	31889	470614135	new
+8	5555	40000	-719017797	810662019	new
+9	100	5000	5443	0	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Ou

<TRUNCATED>

[30/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q
new file mode 100644
index 0000000..f2cada2
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_part_all_primitive.q
@@ -0,0 +1,514 @@
+set hive.explain.user=true;
+set hive.mapred.mode=nonstrict;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=true;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=false;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all primitive conversions
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS Various --> Various
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, TIMESTAMP) --> BOOLEAN
+--
+CREATE TABLE part_change_various_various_boolean(insert_num int, c1 TINYINT, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_boolean partition(part=1)
+    values(1, 255, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, 'true', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 45, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, 200, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, 'time will come', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_boolean replace columns (insert_num int, c1 BOOLEAN, c2 BOOLEAN, c3 BOOLEAN, c4 BOOLEAN, c5 BOOLEAN, c6 BOOLEAN, c7 BOOLEAN, c8 BOOLEAN, c9 BOOLEAN, b STRING);
+
+insert into table part_change_various_various_boolean partition(part=2)
+    values (5, 1, true, false, 1, 0, false, false, true, false, 'new');
+
+insert into table part_change_various_various_boolean partition(part=1)
+    values (6, 0, 1, 1, false, 0, true, false, true, 0, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,b from part_change_various_various_boolean order by insert_num;
+
+drop table part_change_various_various_boolean;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, SHORT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BYTE
+--
+CREATE TABLE part_change_various_various_tinyint(insert_num int, c1 BOOLEAN, c2 SMALLINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_tinyint partition(part=1)
+    values(1, true, 2000, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 1000, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72909, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, 90000, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_tinyint replace columns (insert_num int, c1 TINYINT, c2 TINYINT, c3 TINYINT, c4 TINYINT, c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT, c10 TINYINT, c11 TINYINT, b STRING);
+
+insert into table part_change_various_various_tinyint partition(part=2)
+    values (5, 23, 71, 127, 1, 131, -60, 68, -230, -182, 40, 93, 'new');
+
+insert into table part_change_various_various_tinyint partition(part=1)
+    values (6, -248, 85, -126, -167, 91, 113, -28, -63, 0, 8, 237, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_tinyint order by insert_num;
+
+drop table part_change_various_various_tinyint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, INT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> SMALLINT
+--
+CREATE TABLE part_change_various_various_smallint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 INT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_smallint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_smallint replace columns (insert_num int, c1 SMALLINT, c2 SMALLINT, c3 SMALLINT, c4 SMALLINT, c5 SMALLINT, c6 SMALLINT, c7 SMALLINT, c8 SMALLINT, c9 SMALLINT, c10 SMALLINT, c11 SMALLINT, b STRING);
+
+insert into table part_change_various_various_smallint partition(part=2)
+    values (5, -30486, 15230, 3117, 1, -117, -7131, 20227, -24858, -28771, 46114, 72909, 'new');
+
+insert into table part_change_various_various_smallint partition(part=1)
+    values (6, -10542, -1805, -4844, 15507, 91, 22385, -28, -12268, 0, 66475, 774, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_smallint order by insert_num;
+
+drop table part_change_various_various_smallint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, LONG, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> INT
+--
+CREATE TABLE part_change_various_various_int(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 BIGINT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_int partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_int replace columns (insert_num int, c1 INT, c2 INT, c3 INT, c4 INT, c5 INT, c6 INT, c7 INT, c8 INT, c9 INT, c10 INT, c11 INT, b STRING);
+
+insert into table part_change_various_various_int partition(part=2)
+    values (5, 560930, -1281818, 127, 1, 84269672, -60, 27094665, -36016110, -182, 3244222, 561431, 'new');
+
+insert into table part_change_various_various_int partition(part=1)
+    values (6, -1928921, 695025, -151775655, -167, 91, 113, -164341325, -134237413, 0, 6229, 4422, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_int order by insert_num;
+
+drop table part_change_various_various_int;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, FLOAT, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> BIGINT
+--
+CREATE TABLE part_change_various_various_bigint(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 FLOAT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_bigint partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '1998287.3541', '1998287.3541', '1998287.3541', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_bigint replace columns (insert_num int, c1 BIGINT, c2 BIGINT, c3 BIGINT, c4 BIGINT, c5 BIGINT, c6 BIGINT, c7 BIGINT, c8 BIGINT, c9 BIGINT, c10 BIGINT, c11 BIGINT, b STRING);
+
+insert into table part_change_various_various_bigint partition(part=2)
+    values (5, 5573199346255528403, 71, 151775655, 1, 131, -60, 6275638713485623898, -230, -695025, 519542222, -29.0764, 'new');
+
+insert into table part_change_various_various_bigint partition(part=1)
+    values (6, -164341325, 9043162437544575070, -126, -6566204574741299000, 91, 113, -28, -63, 0, 3244222, -90, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_bigint order by insert_num;
+
+drop table part_change_various_various_bigint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, DOUBLE, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> FLOAT
+--
+CREATE TABLE part_change_various_various_float(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_float partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '2402.3', '2402.3', '2402.3', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_float replace columns (insert_num int, c1 FLOAT, c2 FLOAT, c3 FLOAT, c4 FLOAT, c5 FLOAT, c6 FLOAT, c7 FLOAT, c8 FLOAT, c9 FLOAT, c10 FLOAT, c11 FLOAT, b STRING);
+
+insert into table part_change_various_various_float partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, -3651.67212, 46114.28, 'new');
+
+insert into table part_change_various_various_float partition(part=1)
+    values (6, -1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -93222.200, 29.076, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_float order by insert_num;
+
+drop table part_change_various_various_float;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DECIMAL, STRING, CHAR, VARCHAR, TIMESTAMP) --> DOUBLE
+--
+CREATE TABLE part_change_various_various_double(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 DOUBLE, c7 DECIMAL(38,18), c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_double partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '-2999', '-2999', '-2999', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '5299', '5299', '5299', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE, c6 DOUBLE, c7 DOUBLE, c8 DOUBLE, c9 DOUBLE, c10 DOUBLE, c11 DOUBLE, b STRING);
+
+insert into table part_change_various_various_double partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, 0.00007011717, 4.28479948, 'new');
+
+insert into table part_change_various_various_double partition(part=1)
+    values (6, -1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -66475.0000008, -284799488.1, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_double order by insert_num;
+
+drop table part_change_various_various_double;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, STRING, CHAR, VARCHAR, TIMESTAMP) --> DECIMAL
+--
+CREATE TABLE part_change_various_various_decimal(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 STRING, c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_decimal partition(part=1)
+    values(1, -2999, 200, 72909, 3244222, -29.0764, 470614135, 470614135, '--1551801.09502', '--1551801.09502', '--1551801.09502', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, 0, 100, 483777, -23866739993, -3651.672121, 46114.284799488, 46114.284799488, '', '', '', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, false, 72, 3244222, -93222, 30.774, -66475.561431, -66475.561431, '1', '1', '1', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, 1, -90, 754072151, 3289094, 46114.284799488 ,9250340.75, 9250340.75, '2402.3', '2402.3', '2402.3', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_decimal replace columns (insert_num int, c1 DECIMAL(38,18), c2 DECIMAL(38,18), c3 DECIMAL(38,18), c4 DECIMAL(38,18), c5 DECIMAL(38,18), c6 DECIMAL(38,18), c7 DECIMAL(38,18), c8 DECIMAL(38,18), c9 DECIMAL(38,18), c10 DECIMAL(38,18), c11 DECIMAL(38,18), b STRING);
+
+insert into table part_change_various_various_decimal partition(part=2)
+    values (5, 953967041., 62.0791539559013466, 718.78, 1, 203.199548118, -60, 6275638713485623898, -230, -695025, 0.00007011717, 4.28479948, 'new');
+
+insert into table part_change_various_various_decimal partition(part=1)
+    values (6,-1255178165.77663, 9043162437544575070.974, -4314.7918, -1240033819, 91, 1698.95, -100.3597812, -63, 0, -66475.0000008, -284799488.1, 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,b from part_change_various_various_decimal order by insert_num;
+
+drop table part_change_various_various_decimal;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY) --> STRING
+--
+CREATE TABLE part_change_various_various_string(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 CHAR(25), c10 VARCHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_string partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,          '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, c5 STRING, c6 STRING, c7 STRING, c8 STRING, c9 STRING, c10 STRING, c11 STRING, c12 STRING, c13 STRING, b STRING);
+
+insert into table part_change_various_various_string partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_string partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_string order by insert_num;
+
+drop table part_change_various_various_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, VARCHAR, TIMESTAMP, DATE, BINARY) --> CHAR
+--
+CREATE TABLE part_change_various_various_char(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 VARCHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_char partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_char replace columns (insert_num int, c1 CHAR(25), c2 CHAR(25), c3 CHAR(25), c4 CHAR(25), c5 CHAR(25), c6 CHAR(25), c7 CHAR(25), c8 CHAR(25), c9 CHAR(25), c10 CHAR(25), c11 CHAR(25), c12 CHAR(25), c13 CHAR(25), b STRING);
+
+insert into table part_change_various_various_char partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_char partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char order by insert_num;
+
+drop table part_change_various_various_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, VARCHAR, TIMESTAMP, DATE, BINARY) --> CHAR trunc
+--
+CREATE TABLE part_change_various_various_char_trunc(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 VARCHAR(8), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_char_trunc partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_char_trunc replace columns (insert_num int, c1 CHAR(8), c2 CHAR(8), c3 CHAR(8), c4 CHAR(8), c5 CHAR(8), c6 CHAR(8), c7 CHAR(8), c8 CHAR(8), c9 CHAR(8), c10 CHAR(8), c11 CHAR(8), c12 CHAR(8), c13 CHAR(8), b STRING);
+
+insert into table part_change_various_various_char_trunc partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_char_trunc partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_char_trunc order by insert_num;
+
+drop table part_change_various_various_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, TIMESTAMP, DATE, BINARY) --> VARCHAR
+--
+CREATE TABLE part_change_various_various_varchar(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_varchar partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_varchar replace columns (insert_num int, c1 VARCHAR(25), c2 VARCHAR(25), c3 VARCHAR(25), c4 VARCHAR(25), c5 VARCHAR(25), c6 VARCHAR(25), c7 VARCHAR(25), c8 VARCHAR(25), c9 VARCHAR(25), c10 VARCHAR(25), c11 VARCHAR(25), c12 VARCHAR(25), c13 VARCHAR(25), b STRING);
+
+insert into table part_change_various_various_varchar partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_varchar partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar order by insert_num;
+
+drop table part_change_various_various_varchar;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, TIMESTAMP, DATE, BINARY) --> VARCHAR trunc
+--
+CREATE TABLE part_change_various_various_varchar_trunc(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 TIMESTAMP, c12 DATE, c13 BINARY, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_varchar_trunc partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         'dynamic reptile  ', 'dynamic reptile  ',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'binary', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '  baffling    ', '  baffling    ',        '2007-02-09 05:17:29.368756876', '0004-09-22', 'binary', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,         '1', '1',                                  '6229-06-28 02:54:28.970117179', '5966-07-09', 'binary', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        'junkyard', 'junkyard',                    '2002-05-10 05:29:48.990818073', '1815-05-06', 'binary', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_varchar_trunc replace columns (insert_num int, c1 VARCHAR(8), c2 VARCHAR(8), c3 VARCHAR(8), c4 VARCHAR(8), c5 VARCHAR(8), c6 VARCHAR(8), c7 VARCHAR(8), c8 VARCHAR(8), c9 VARCHAR(8), c10 VARCHAR(8), c11 VARCHAR(8), c12 VARCHAR(8), c13 VARCHAR(8), b STRING);
+
+insert into table part_change_various_various_varchar_trunc partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'verdict', 'verdict', 'timestamp', 'date', 'binary', 'new');
+
+insert into table part_change_various_various_varchar_trunc partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      'trial',   'trial',  '2016-03-07 03:02:22.0', '2016-03-07', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,b from part_change_various_various_varchar_trunc order by insert_num;
+
+drop table part_change_various_various_varchar_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), STRING, CHAR, VARCHAR, DATE) --> TIMESTAMP
+--
+CREATE TABLE part_change_various_various_timestamp(insert_num int, c1 BOOLEAN, c2 TINYINT, c3 SMALLINT, c4 INT, c5 BIGINT, c6 FLOAT, c7 DOUBLE, c8 DECIMAL(38,18), c9 STRING, c10 CHAR(25), c11 VARCHAR(25), c12 DATE, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_timestamp partition(part=1)
+    values(1, true,  200,  72909,      3244222, -99999999999,     -29.0764,      470614135,        470614135,         '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222',  '0004-09-22 18:26:29.519542222', '2007-02-09', 'original'),
+          (2, 0,     100,  483777,      14,     -23866739993,     -3651.672121,  46114.284799488,  46114.284799488,   '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876',  '2007-02-09 05:17:29.368756876', '0004-09-22', 'original'),
+          (3, false, 72,   3244222,    -93222,   30.774,       -   66475.561431, -66475.561431,    0.561431,          '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179',  '6229-06-28 02:54:28.970117179', '5966-07-09', 'original'),
+          (4, 1,    -90,   754072151,   3289094, 46114.284799488,  9250340.75,    9250340.75,      9250340.75,        '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073',  '2002-05-10 05:29:48.990818073', '1815-05-06', 'original');
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_timestamp replace columns (insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, c6 TIMESTAMP, c7 TIMESTAMP, c8 TIMESTAMP, c9 TIMESTAMP, c10 TIMESTAMP, c11 TIMESTAMP, c12 TIMESTAMP, b STRING);
+
+insert into table part_change_various_various_timestamp partition(part=2)
+    values (5, 'true', '400',  '44388',       -'100',    '953967041.',       '62.079153',     '718.78',         '1',                'timestamp', 'timestamp', 'timestamp', 'date', 'new');
+
+insert into table part_change_various_various_timestamp partition(part=1)
+    values (6,-'false', '-67', '833',          '63993', ' 1255178165.77663', '905070.974', '-4314.7918',        -'1240033819',      '2016-03-07 03:02:22.0',   '2016-03-07 03:02:22.0',  '2016-03-07 03:02:22.0', '2016-03-07', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,b from part_change_various_various_timestamp order by insert_num;
+
+drop table part_change_various_various_timestamp;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (STRING, CHAR, VARCHAR, TIMESTAMP --> DATE
+--
+CREATE TABLE part_change_various_various_date(insert_num int, c1 STRING, c2 CHAR(25), c3 VARCHAR(25), c4 TIMESTAMP, b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_date partition(part=1)
+    values(1, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222',  '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'original'),
+          (2, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876',  '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'original'),
+          (3, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179',  '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'original'),
+          (4, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073',  '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'original');
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_date replace columns (insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, b STRING);
+
+insert into table part_change_various_various_date partition(part=2)
+    values (5, '2016-03-07', '2016-03-07', '2016-03-07', '2016-03-07', 'new');
+
+insert into table part_change_various_various_date partition(part=1)
+    values (6,-'2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10','new');
+
+explain
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+select insert_num,part,c1,c2,c3,c4,b from part_change_various_various_date order by insert_num;
+
+drop table part_change_various_various_date;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: (STRING, CHAR, VARCHAR) --> BINARY
+--
+CREATE TABLE part_change_various_various_binary(insert_num int, c1 STRING, c2 CHAR(25), c3 VARCHAR(25), b STRING) PARTITIONED BY(part INT);
+
+insert into table part_change_various_various_binary partition(part=1)
+    values(1, 'binary', 'binary',  'binary', 'original'),
+          (2, 'binary', 'binary',  'binary', 'original'),
+          (3, 'binary', 'binary',  'binary', 'original'),
+          (4, 'binary', 'binary',  'binary', 'original');
+
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_binary replace columns (insert_num int, c1 BINARY, c2 BINARY, c3 BINARY, b STRING);
+
+insert into table part_change_various_various_binary partition(part=2)
+    values (5, 'binary', 'binary', 'binary', 'new');
+
+insert into table part_change_various_various_binary partition(part=1)
+    values (6,-'binary', 'binary', 'binary', 'new');
+
+explain
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+select insert_num,part,c1,c2,c3,b from part_change_various_various_binary order by insert_num;
+
+drop table part_change_various_various_binary;

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_table.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_table.q b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_table.q
new file mode 100644
index 0000000..de0b7ba
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/schema_evol_text_vecrow_mapwork_table.q
@@ -0,0 +1,826 @@
+set hive.explain.user=true;
+set hive.cli.print.header=true;
+SET hive.exec.schema.evolution=true;
+SET hive.vectorized.execution.enabled=true;
+SET hive.vectorized.use.vectorized.input.format=false;
+SET hive.vectorized.use.vector.serde.deserialize=false;
+SET hive.vectorized.use.row.serde.deserialize=true;
+set hive.fetch.task.conversion=none;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.metastore.disallow.incompatible.col.type.changes=true;
+set hive.default.fileformat=textfile;
+
+-- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+-- NOTE: the use of hive.vectorized.use.row.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the row SERDE methods.
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
+--
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING);
+DESCRIBE FORMATTED table_add_int_permute_select;
+
+insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int);
+DESCRIBE FORMATTED table_add_int_permute_select;
+
+insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40);
+
+insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200);
+
+explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num;
+select insert_num,a,b,c from table_add_int_permute_select order by insert_num;
+select insert_num,c from table_add_int_permute_select order by insert_num;
+
+drop table table_add_int_permute_select;
+
+
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING);
+DESCRIBE FORMATTED table_add_int_string_permute_select;
+
+insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original');
+
+-- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string);
+DESCRIBE FORMATTED table_add_int_string_permute_select;
+
+insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty');
+
+insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred');
+
+explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num;
+
+-- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,a,d from table_add_int_string_permute_select order by insert_num;
+select insert_num,c from table_add_int_string_permute_select order by insert_num;
+select insert_num,d from table_add_int_string_permute_select order by insert_num;
+
+drop table table_add_int_string_permute_select;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING);
+
+insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING);
+
+insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new');
+
+insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num;
+
+drop table table_change_string_group_double;
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING);
+
+insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);
+
+insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new');
+insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num;
+
+drop table table_change_date_group_string_group_timestamp;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING);
+
+insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original');
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING);DESCRIBE FORMATTED table_change_date_group_string_group_date;
+
+insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num;
+
+drop table table_change_date_group_string_group_date;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char_trunc replace columns (insert_num int, c1 CHAR(5), c2 CHAR(5), c3 CHAR(5), c4 CHAR(5), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_char_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_char_trunc;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_varchar(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), c4 VARCHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), VARCHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_varchar_trunc(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING);
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar_trunc
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_varchar_trunc replace columns (insert_num int, c1 VARCHAR(5), c2 VARCHAR(5), c3 VARCHAR(5), c4 VARCHAR(5), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_multi_ints_varchar_trunc
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_varchar_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_multi_ints_varchar_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (FLOAT, DOUBLE, DECIMAL), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_string(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_string
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, - 832222222, 255, 4957,'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_string
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_string order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_string;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_char(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_char
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3,  9000000000, -255, 4957,'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_char
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_char;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), CHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_char_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_char_trunc
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 832222222, -255, 4957, 'original'),
+           (4, 847492223, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_char_trunc replace columns (insert_num int, c1 CHAR(7), c2 CHAR(7), c3 CHAR(7), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_char_trunc
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_char_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_char_trunc;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_varchar(insert_num int, c1 float, c2 double, c3 decimal(38,18), b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_varchar
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_varchar replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_varchar
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_varchar;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (DECIMAL, FLOAT, DOUBLE), VARCHAR truncation
+--
+CREATE TABLE table_change_numeric_group_string_group_floating_varchar_trunc(insert_num int, c1 decimal(38,18), c2 float, c3 double, b STRING);
+
+insert into table table_change_numeric_group_string_group_floating_varchar_trunc
+    values (1, -23866739993, 753.7028, -3651.672121, 'original'),
+           (2, -10.3, -2, -29.0764, 'original'),
+           (3, 9000000000, -255, 4957, 'original'),
+           (4, -999999999999, 0, 20435, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_floating_varchar_trunc replace columns (insert_num int, c1 VARCHAR(7), c2 VARCHAR(7), c3 VARCHAR(7), b STRING) ;
+
+insert into table table_change_numeric_group_string_group_floating_varchar_trunc
+    values (5, '30.774', '20.31', '46114.284799488', 'new'),
+           (6, '-66475.561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_numeric_group_string_group_floating_varchar_trunc order by insert_num;
+
+drop table table_change_numeric_group_string_group_floating_varchar_trunc;
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: STRING, (CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_string_group_string_group_string(insert_num int, c1 string, c2 string, c3 string, c4 string, b STRING);
+
+insert into table table_change_string_group_string_group_string
+    values (1, 'escapist', 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_string replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 VARCHAR(50), c4 CHAR(9), b STRING) ;
+
+insert into table table_change_string_group_string_group_string
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_string_group_string_group_string order by insert_num;
+
+drop table table_change_string_group_string_group_string;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: CHAR, (VARCHAR, VARCHAR trunc, STRING)
+--
+CREATE TABLE table_change_string_group_string_group_char(insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), b STRING);
+
+insert into table table_change_string_group_string_group_char
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_char replace columns (insert_num int, c1 VARCHAR(50), c2 VARCHAR(9), c3 STRING, b STRING) ;
+
+insert into table table_change_string_group_string_group_char
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_char order by insert_num;
+
+drop table table_change_string_group_string_group_char;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> STRING_GROUP: VARCHAR, (CHAR, CHAR trunc, STRING)
+--
+CREATE TABLE table_change_string_group_string_group_varchar(insert_num int, c1 VARCHAR(50), c2 VARCHAR(50), c3 VARCHAR(50), b STRING);
+
+insert into table table_change_string_group_string_group_varchar
+    values (1, 'escapist', 'escapist', 'escapist', 'original'),
+           (2, 'heartbeat', 'heartbeat', 'heartbeat', 'original'),
+           (3, 'dynamic reptile', 'dynamic reptile', 'dynamic reptile', 'original'),
+           (4, 'blank pads   ', 'blank pads   ', 'blank pads   ', 'original');
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_string_group_varchar replace columns (insert_num int, c1 CHAR(50), c2 CHAR(9), c3 STRING, b STRING) ;
+
+insert into table table_change_string_group_string_group_varchar
+    values (5, 'junkyard', 'junkyard', 'junkyard', 'new'),
+           (6, '  baffling    ', '  baffling    ', '  baffling    ', 'new'),
+           (7, '           featherweight  ', '           featherweight  ','           featherweight  ', 'new'),
+           (8, '  against', '  against', '  against', 'new'),
+           (9, 'hangar paralysed companion ', 'hangar paralysed companion ', 'hangar paralysed companion ', 'new'),
+           (10, 'bottom  ', 'bottom  ', 'bottom  ', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_string_group_string_group_varchar order by insert_num;
+
+drop table table_change_string_group_string_group_varchar;
+
+
+
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: TINYINT, (SMALLINT, INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_tinyint(insert_num int, c1 tinyint, c2 tinyint, c3 tinyint, c4 tinyint, c5 tinyint, c6 tinyint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_tinyint
+    values (1, 45, 45, 45, 45, 45, 45, 'original'),
+           (2, -2, -2, -2, -2, -2, -2, 'original'),
+           (3, -255, -255, -255, -255, -255, -255, 'original'),
+           (4, 100, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_tinyint replace columns (insert_num int, c1 SMALLINT, c2 INT, c3 BIGINT, c4 decimal(38,18), c5 FLOAT, c6 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_tinyint
+    values (5, '774', '2031', '200', '12', '99', '0', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', '7', '6', 'new'),
+           (7, '256', '32768', '31889', '300', '444', '506', 'new'),
+           (8, '5555', '40000', '-719017797', '45', '55', '65', 'new'),
+           (9, '100', '5000', '5443', '22', '2', '-2', 'new'),
+           (10, '17', '90000', '754072151', '95', '20', '18', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,c6,b from table_change_lower_to_higher_numeric_group_tinyint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_tinyint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: SMALLINT, (INT, BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_smallint(insert_num int, c1 smallint, c2 smallint, c3 smallint, c4 smallint, c5 smallint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_smallint
+    values (1, 2031, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, -5000, 'original'),
+           (4, 100, 100, 100, 100, 100, 'original');
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_smallint replace columns (insert_num int, c1 INT, c2 BIGINT, c3 decimal(38,18), c4 FLOAT, c5 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_smallint
+    values (5, '774', '2031', '200', '12', '99', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', '7', 'new'),
+           (7, '256', '32768', '31889', '300', '444', 'new'),
+           (8, '5555', '40000', '-719017797', '45', '55', 'new'),
+           (9, '100', '5000', '5443', '22', '2', 'new'),
+           (10, '17', '90000', '754072151', '95', '20', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+select insert_num,c1,c2,c3,c4,c5,b from table_change_lower_to_higher_numeric_group_smallint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_smallint;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: INT, (BIGINT, DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_int(insert_num int, c1 int, c2 int, c3 int, c4 int, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_int
+    values (1, 2031, 2031, 2031, 2031, 'original'),
+           (2, -2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_int replace columns (insert_num int, c1 BIGINT, c2 decimal(38,18), c3 FLOAT, c4 DOUBLE,  b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_int
+    values (5, '774', '2031', '200', '12', 'new'),
+           (6, '561431', '52927714', '7203778961',  '8', 'new'),
+           (7, '256', '32768', '31889', '300', 'new'),
+           (8, '5555', '40000', '-719017797', '45', 'new'),
+           (9, '100', '5000', '5443', '22', 'new'),
+           (10, '17', '90000', '754072151', '95', 'new');
+
+explain
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+select insert_num,c1,c2,c3,c4,b from table_change_lower_to_higher_numeric_group_int order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_int;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: BIGINT, (DECIMAL, FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_bigint(insert_num int, c1 bigint, c2 bigint, c3 bigint, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_bigint
+    values (1, 7203778961, 7203778961, 7203778961, 'original'),
+           (2, -2, -2, -2, 'original'),
+           (3, -5000, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_bigint replace columns (insert_num int, c1 decimal(38,18), c2 FLOAT, c3 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_bigint
+    values (5, '774', '2031', '200', 'new'),
+           (6, '561431', '52927714', '7203778961', 'new'),
+           (7, '256', '32768', '31889', 'new'),
+           (8, '5555', '40000', '-719017797', 'new'),
+           (9, '100', '5000', '5443', 'new'),
+           (10, '17', '90000', '754072151', 'new');
+
+explain
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+select insert_num,c1,c2,c3,b from table_change_lower_to_higher_numeric_group_bigint order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_bigint;
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: DECIMAL, (FLOAT, DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_decimal(insert_num int, c1 decimal(38,18), c2 decimal(38,18), b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_decimal
+    values (1, -29.0764, -29.0764, 'original'),
+           (2, 753.7028, 753.7028, 'original'),
+           (3, -5000, -5000, 'original'),
+           (4, 52927714, 52927714, 'original');
+
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_decimal replace columns (insert_num int, c1 float, c2 double, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_decimal
+    values (5, '7.74', '22.3', 'new'),
+           (6, '56.1431', '90.9', 'new'),
+           (7, '2.56', '25.6', 'new'),
+           (8, '555.5', '55.55', 'new'),
+           (9, '10.0', '0.100', 'new'),
+           (10, '1.7', '17.8888', 'new');
+
+explain
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+select insert_num,c1,c2,b from table_change_lower_to_higher_numeric_group_decimal order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_decimal;
+
+
+
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for "lower" type to "higher" NUMERIC_GROUP: FLOAT, (DOUBLE)
+--
+CREATE TABLE table_change_lower_to_higher_numeric_group_float(insert_num int, c1 float, b STRING);
+
+insert into table table_change_lower_to_higher_numeric_group_float
+    values (1, -29.0764, 'original'),
+           (2, 753.7028, 'original'),
+           (3, -5000, 'original'),
+           (4, 52927714, 'original');
+
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
+
+-- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_lower_to_higher_numeric_group_float replace columns (insert_num int, c1 DOUBLE, b STRING) ;
+
+insert into table table_change_lower_to_higher_numeric_group_float
+    values (5, '774', 'new'),
+           (6, '561431', 'new'),
+           (7, '256', 'new'),
+           (8, '5555', 'new'),
+           (9, '100', 'new'),
+           (10, '17', 'new');
+
+explain
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
+
+select insert_num,c1,b from table_change_lower_to_higher_numeric_group_float order by insert_num;
+
+drop table table_change_lower_to_higher_numeric_group_float;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/queries/clientpositive/tez_schema_evolution.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/tez_schema_evolution.q b/ql/src/test/queries/clientpositive/tez_schema_evolution.q
index d855cd2..1d8f487 100644
--- a/ql/src/test/queries/clientpositive/tez_schema_evolution.q
+++ b/ql/src/test/queries/clientpositive/tez_schema_evolution.q
@@ -1,3 +1,4 @@
+SET hive.vectorized.execution.enabled=false;
 set hive.mapred.mode=nonstrict;
 -- SORT_QUERY_RESULTS
 


[11/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

Posted by mm...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_table.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_table.q.out b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_table.q.out
index 4003c20..14abca9 100644
--- a/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_table.q.out
+++ b/ql/src/test/results/clientpositive/tez/schema_evol_text_nonvec_mapwork_table.q.out
@@ -1,297 +1,3737 @@
 PREHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
 --
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
+--
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@table1
+PREHOOK: Output: default@table_add_int_permute_select
 POSTHOOK: query: -- SORT_QUERY_RESULTS
 --
--- FILE VARIATION: ORC, Non-Vectorized, MapWork, Table
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Table
+--
+------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE ADD COLUMNS
 --
 --
--- SECTION VARIATION: ALTER TABLE ADD COLUMNS
----
-CREATE TABLE table1(a INT, b STRING) STORED AS TEXTFILE
+-- SUBSECTION: ALTER TABLE ADD COLUMNS: INT PERMUTE SELECT
+--
+--
+CREATE TABLE table_add_int_permute_select(insert_num int, a INT, b STRING)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__1
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'original'),(2, 'original'), (3, 'original'),(4, 'original')
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__1
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
-#### A masked pattern was here ####
-a	b
-1	original
-2	original
-3	original
-4	original
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
 PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(c int, d string)
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_permute_select add columns(c int)
 POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__2
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(1, 'new', 10, 'ten'),(2, 'new', 20, 'twenty'), (3, 'new', 30, 'thirty'),(4, 'new', 40, 'forty')
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (5, 1, 'new', 10),
+           (6, 2, 'new', 20),
+           (7, 3, 'new', 30),
+           (8, 4, 'new', 40)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__2
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3
+PREHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__3
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: insert into table table_add_int_permute_select
+    values (9, 5, 'new', 100),
+           (10, 6, 'new', 200)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__3
+POSTHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: Lineage: table_add_int_permute_select.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_permute_select.insert_num EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
 _col0	_col1	_col2	_col3
-PREHOOK: query: select a,b,c,d from table1
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=11)
+          Output:["_col0","_col1","_col2"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=11)
+              Output:["_col0","_col1","_col2"]
+              TableScan [TS_0] (rows=10 width=11)
+                default@table_add_int_permute_select,table_add_int_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
+PREHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d from table1
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_permute_select order by insert_num
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
+POSTHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-a	b	c	d
-1	new	10	ten
-1	original	NULL	NULL
-2	new	20	twenty
-2	original	NULL	NULL
-3	new	30	thirty
-3	original	NULL	NULL
-4	new	40	forty
-4	original	NULL	NULL
-PREHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table1
-PREHOOK: Output: default@table1
-POSTHOOK: query: -- ADD COLUMNS
-alter table table1 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table1
-POSTHOOK: Output: default@table1
-PREHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@values__tmp__table__3
-PREHOOK: Output: default@table1
-POSTHOOK: query: insert into table table1 values(5, 'new', 100, 'hundred', 'another1'),(6, 'new', 200, 'two hundred', 'another2')
+PREHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_permute_select order by insert_num
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@values__tmp__table__3
-POSTHOOK: Output: default@table1
-POSTHOOK: Lineage: table1.a EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table1.b SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table1.c EXPRESSION [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-POSTHOOK: Lineage: table1.d SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
-POSTHOOK: Lineage: table1.e SIMPLE [(values__tmp__table__3)values__tmp__table__3.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
-_col0	_col1	_col2	_col3	_col4
-PREHOOK: query: select a,b,c,d,e from table1
+POSTHOOK: Input: default@table_add_int_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
 PREHOOK: type: QUERY
-PREHOOK: Input: default@table1
+PREHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-POSTHOOK: query: select a,b,c,d,e from table1
+POSTHOOK: query: select insert_num,c from table_add_int_permute_select order by insert_num
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table1
+POSTHOOK: Input: default@table_add_int_permute_select
 #### A masked pattern was here ####
-a	b	c	d	e
-1	new	10	ten	NULL
-1	original	NULL	NULL	NULL
-2	new	20	twenty	NULL
-2	original	NULL	NULL	NULL
-3	new	30	thirty	NULL
-3	original	NULL	NULL	NULL
-4	new	40	forty	NULL
-4	original	NULL	NULL	NULL
-5	new	100	hundred	another1
-6	new	200	two hundred	another2
-PREHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: drop table table_add_int_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_permute_select
+PREHOOK: Output: default@table_add_int_permute_select
+POSTHOOK: query: drop table table_add_int_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_permute_select
+POSTHOOK: Output: default@table_add_int_permute_select
+PREHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
 --
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
-PREHOOK: Output: default@table3
-POSTHOOK: query: --
--- SECTION VARIATION: ALTER TABLE CHANGE COLUMN
--- smallint = (2-byte signed integer, from -32,768 to 32,767)
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- SUBSECTION: ALTER TABLE ADD COLUMNS: INT, STRING, PERMUTE SELECT
+--
 --
-CREATE TABLE table3(a smallint, b STRING) STORED AS TEXTFILE
+CREATE TABLE table_add_int_string_permute_select(insert_num int, a INT, b STRING)
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__4
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(1000, 'original'),(6737, 'original'), ('3', 'original'),('4', 'original')
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (1, 1, 'original'),
+           (2, 2, 'original'),
+           (3, 3, 'original'),
+           (4, 4, 'original')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__4
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-3	original
-4	original
-6737	original
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__4)values__tmp__table__4.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMNS ...
+alter table table_add_int_string_permute_select add columns(c int, d string)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: query: DESCRIBE FORMATTED table_add_int_string_permute_select
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+a                   	int                 	                    
+b                   	string              	                    
+c                   	int                 	                    
+d                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	4                   
+	rawDataSize         	48                  
+	totalSize           	52                  
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__5
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(72909, 'new'),(200, 'new'), (32768, 'new'),(40000, 'new')
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (5, 1, 'new', 10, 'ten'),
+           (6, 2, 'new', 20, 'twenty'),
+           (7, 3, 'new', 30, 'thirty'),
+           (8, 4, 'new', 40, 'forty')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__5
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-_col0	_col1
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-6737	original
-72909	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-PREHOOK: type: ALTERTABLE_ADDCOLS
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 add columns(e string)
-POSTHOOK: type: ALTERTABLE_ADDCOLS
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__5)values__tmp__table__5.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 PREHOOK: type: QUERY
 PREHOOK: Input: default@values__tmp__table__6
-PREHOOK: Output: default@table3
-POSTHOOK: query: insert into table table3 values(5000, 'new', 'another5'),(90000, 'new', 'another6')
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: insert into table table_add_int_string_permute_select
+    values (9, 5, 'new', 100, 'hundred'),
+           (10, 6, 'new', 200, 'two hundred')
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@values__tmp__table__6
-POSTHOOK: Output: default@table3
-POSTHOOK: Lineage: table3.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
-POSTHOOK: Lineage: table3.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
-POSTHOOK: Lineage: table3.e SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
-_col0	_col1	_col2
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-PREHOOK: type: ALTERTABLE_RENAMECOL
-PREHOOK: Input: default@table3
-PREHOOK: Output: default@table3
-POSTHOOK: query: -- ADD COLUMNS ... RESTRICT
-alter table table3 change column a a int
-POSTHOOK: type: ALTERTABLE_RENAMECOL
-POSTHOOK: Input: default@table3
-POSTHOOK: Output: default@table3
-PREHOOK: query: select a,b from table3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@table3
-#### A masked pattern was here ####
-POSTHOOK: query: select a,b from table3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@table3
-#### A masked pattern was here ####
-a	b
-1000	original
-200	new
-3	original
-32768	new
-4	original
-40000	new
-5000	new
-6737	original
-72909	new
-90000	new
-PREHOOK: query: DROP TABLE table1
+POSTHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: Lineage: table_add_int_string_permute_select.a EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.b SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.c EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.d SIMPLE [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_add_int_string_permute_select.insert_num EXPRESSION [(values__tmp__table__6)values__tmp__table__6.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=15)
+          Output:["_col0","_col1","_col2"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=15)
+              Output:["_col0","_col1","_col2"]
+              TableScan [TS_0] (rows=10 width=15)
+                default@table_add_int_string_permute_select,table_add_int_string_permute_select,Tbl:COMPLETE,Col:NONE,Output:["insert_num","a","b"]
+
+PREHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: -- SELECT permutation columns to make sure NULL defaulting works right
+select insert_num,a,b from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b
+1	1	original
+10	6	new
+2	2	original
+3	3	original
+4	4	original
+5	1	new
+6	2	new
+7	3	new
+8	4	new
+9	5	new
+PREHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c
+1	1	original	NULL
+10	6	new	200
+2	2	original	NULL
+3	3	original	NULL
+4	4	original	NULL
+5	1	new	10
+6	2	new	20
+7	3	new	30
+8	4	new	40
+9	5	new	100
+PREHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,b,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	b	c	d
+1	1	original	NULL	NULL
+10	6	new	200	two hundred
+2	2	original	NULL	NULL
+3	3	original	NULL	NULL
+4	4	original	NULL	NULL
+5	1	new	10	ten
+6	2	new	20	twenty
+7	3	new	30	thirty
+8	4	new	40	forty
+9	5	new	100	hundred
+PREHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,c,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	c	d
+1	1	NULL	NULL
+10	6	200	two hundred
+2	2	NULL	NULL
+3	3	NULL	NULL
+4	4	NULL	NULL
+5	1	10	ten
+6	2	20	twenty
+7	3	30	thirty
+8	4	40	forty
+9	5	100	hundred
+PREHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,a,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	a	d
+1	1	NULL
+10	6	two hundred
+2	2	NULL
+3	3	NULL
+4	4	NULL
+5	1	ten
+6	2	twenty
+7	3	thirty
+8	4	forty
+9	5	hundred
+PREHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	c
+1	NULL
+10	200
+2	NULL
+3	NULL
+4	NULL
+5	10
+6	20
+7	30
+8	40
+9	100
+PREHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,d from table_add_int_string_permute_select order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_add_int_string_permute_select
+#### A masked pattern was here ####
+insert_num	d
+1	NULL
+10	two hundred
+2	NULL
+3	NULL
+4	NULL
+5	ten
+6	twenty
+7	thirty
+8	forty
+9	hundred
+PREHOOK: query: drop table table_add_int_string_permute_select
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_add_int_string_permute_select
+PREHOOK: Output: default@table_add_int_string_permute_select
+POSTHOOK: query: drop table table_add_int_string_permute_select
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_add_int_string_permute_select
+POSTHOOK: Output: default@table_add_int_string_permute_select
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for STRING_GROUP -> DOUBLE: (STRING, CHAR, VARCHAR)
+--
+CREATE TABLE table_change_string_group_double(insert_num int, c1 STRING, c2 CHAR(50), c3 VARCHAR(50), b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__7
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (1, '753.7028', '753.7028', '753.7028', 'original'),
+           (2, '-3651.672121', '-3651.672121', '-3651.672121', 'original'),
+           (3, '-29.0764', '-29.0764', '-29.0764', 'original'),
+           (4, '-10.3', '-10.3', '-10.3', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__7
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 SIMPLE [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__7)values__tmp__table__7.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_string_group_double replace columns (insert_num int, c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__8
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (5, 30.774, 30.774, 30.774, 'new'),
+           (6, 20.31, 20.31, 20.31, 'new'),
+           (7, 46114.284799488, 46114.284799488, 46114.284799488, 'new'),
+           (8, -66475.561431, -66475.561431, -66475.561431, 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__8
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__8)values__tmp__table__8.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__9
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: insert into table table_change_string_group_double
+    values (9, 17808.963785, 17808.963785, 17808.963785, 'new'),
+           (10, 9250340.75 , 9250340.75 , 9250340.75 , 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__9
+POSTHOOK: Output: default@table_change_string_group_double
+POSTHOOK: Lineage: table_change_string_group_double.b SIMPLE [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c1 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c2 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.c3 EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_string_group_double.insert_num EXPRESSION [(values__tmp__table__9)values__tmp__table__9.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=55)
+          Output:["_col0","_col1","_col2","_col3","_col4"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=55)
+              Output:["_col0","_col1","_col2","_col3","_col4"]
+              TableScan [TS_0] (rows=10 width=55)
+                default@table_change_string_group_double,table_change_string_group_double,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,b from table_change_string_group_double order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_string_group_double
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	b
+1	753.7028	753.7028	753.7028	original
+10	9250340.75	9250340.75	9250340.75	new
+2	-3651.672121	-3651.672121	-3651.672121	original
+3	-29.0764	-29.0764	-29.0764	original
+4	-10.3	-10.3	-10.3	original
+5	30.774	30.774	30.774	new
+6	20.31	20.31	20.31	new
+7	46114.284799488	46114.284799488	46114.284799488	new
+8	-66475.561431	-66475.561431	-66475.561431	new
+9	17808.963785	17808.963785	17808.963785	new
+PREHOOK: query: drop table table_change_string_group_double
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_string_group_double
+PREHOOK: Output: default@table_change_string_group_double
+POSTHOOK: query: drop table table_change_string_group_double
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_string_group_double
+POSTHOOK: Output: default@table_change_string_group_double
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: TIMESTAMP, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_timestamp(insert_num int, c1 TIMESTAMP, c2 TIMESTAMP, c3 TIMESTAMP, c4 TIMESTAMP, c5 TIMESTAMP, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__10
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (1, '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', '2000-12-18 08:42:30.000595596', 'original'),
+           (2, '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', '2024-11-11 16:42:41.101', 'original'),
+           (3, '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', '2021-09-24 03:18:32.413655165', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__10
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__10)values__tmp__table__10.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_timestamp replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__11
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (4, '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', '0004-09-22 18:26:29.519542222', 'new'),
+           (5, '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', '1815-05-06 00:12:37.543584705', 'new'),
+           (6, '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', '2007-02-09 05:17:29.368756876', 'new'),
+           (7, '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', '2002-05-10 05:29:48.990818073', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__11
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__11)values__tmp__table__11.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__12
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: insert into table table_change_date_group_string_group_timestamp
+    values (8, '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', '6229-06-28 02:54:28.970117179', 'new'),
+           (9, '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', '5966-07-09 03:30:50.597', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__12
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.b SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c1 SIMPLE [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c2 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c3 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c4 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.c5 EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_timestamp.insert_num EXPRESSION [(values__tmp__table__12)values__tmp__table__12.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=9 width=147)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=9 width=147)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=9 width=147)
+                default@table_change_date_group_string_group_timestamp,table_change_date_group_string_group_timestamp,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_timestamp order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18 08:42:30.000595596	2000-12-18 08:42:30.000595596                     	2000-12-18 08:4	2000-12-18 08:42:30.000595596	2000-12-18 08:4	original
+2	2024-11-11 16:42:41.101	2024-11-11 16:42:41.101                           	2024-11-11 16:4	2024-11-11 16:42:41.101	2024-11-11 16:4	original
+3	2021-09-24 03:18:32.413655165	2021-09-24 03:18:32.413655165                     	2021-09-24 03:1	2021-09-24 03:18:32.413655165	2021-09-24 03:1	original
+4	0004-09-22 18:26:29.519542222	0004-09-22 18:26:29.519542222                     	0004-09-22 18:2	0004-09-22 18:26:29.519542222	0004-09-22 18:2	new
+5	1815-05-06 00:12:37.543584705	1815-05-06 00:12:37.543584705                     	1815-05-06 00:1	1815-05-06 00:12:37.543584705	1815-05-06 00:1	new
+6	2007-02-09 05:17:29.368756876	2007-02-09 05:17:29.368756876                     	2007-02-09 05:1	2007-02-09 05:17:29.368756876	2007-02-09 05:1	new
+7	2002-05-10 05:29:48.990818073	2002-05-10 05:29:48.990818073                     	2002-05-10 05:2	2002-05-10 05:29:48.990818073	2002-05-10 05:2	new
+8	6229-06-28 02:54:28.970117179	6229-06-28 02:54:28.970117179                     	6229-06-28 02:5	6229-06-28 02:54:28.970117179	6229-06-28 02:5	new
+9	5966-07-09 03:30:50.597	5966-07-09 03:30:50.597                           	5966-07-09 03:3	5966-07-09 03:30:50.597	5966-07-09 03:3	new
+PREHOOK: query: drop table table_change_date_group_string_group_timestamp
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_timestamp
+PREHOOK: Output: default@table_change_date_group_string_group_timestamp
+POSTHOOK: query: drop table table_change_date_group_string_group_timestamp
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_timestamp
+POSTHOOK: Output: default@table_change_date_group_string_group_timestamp
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for DATE_GROUP -> STRING_GROUP: DATE, (STRING, CHAR, CHAR trunc, VARCHAR, VARCHAR trunc)
+--
+CREATE TABLE table_change_date_group_string_group_date(insert_num int, c1 DATE, c2 DATE, c3 DATE, c4 DATE, c5 DATE, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__13
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (1, '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', '2000-12-18', 'original'),
+           (2, '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', '2024-11-11', 'original'),
+           (3, '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', '2021-09-24', 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__13
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__13)values__tmp__table__13.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_date_group_string_group_date replace columns(insert_num int, c1 STRING, c2 CHAR(50), c3 CHAR(15), c4 VARCHAR(50), c5 VARCHAR(15), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: query: DESCRIBE FORMATTED table_change_date_group_string_group_date
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+col_name	data_type	comment
+# col_name            	data_type           	comment             
+	 	 
+insert_num          	int                 	                    
+c1                  	string              	                    
+c2                  	char(50)            	                    
+c3                  	char(15)            	                    
+c4                  	varchar(50)         	                    
+c5                  	varchar(15)         	                    
+b                   	string              	                    
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+#### A masked pattern was here ####
+	numFiles            	1                   
+	numRows             	3                   
+	rawDataSize         	195                 
+	totalSize           	198                 
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1                   
+PREHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__14
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: insert into table table_change_date_group_string_group_date
+    values (4, '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', '0004-09-22', 'new'),
+           (5, '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', '1815-05-06', 'new'),
+           (6, '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', '2007-02-09', 'new'),
+           (7, '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', '2002-05-10', 'new'),
+           (8, '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', '6229-06-28', 'new'),
+           (9, '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', '5966-07-09', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__14
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: Lineage: table_change_date_group_string_group_date.b SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col7, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c1 SIMPLE [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c2 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c3 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c4 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.c5 EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_date_group_string_group_date.insert_num EXPRESSION [(values__tmp__table__14)values__tmp__table__14.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5	_col6
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=9 width=91)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=9 width=91)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"]
+              TableScan [TS_0] (rows=9 width=91)
+                default@table_change_date_group_string_group_date,table_change_date_group_string_group_date,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","c5","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,c5,b from table_change_date_group_string_group_date order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	c5	b
+1	2000-12-18	2000-12-18                                        	2000-12-18     	2000-12-18	2000-12-18	original
+2	2024-11-11	2024-11-11                                        	2024-11-11     	2024-11-11	2024-11-11	original
+3	2021-09-24	2021-09-24                                        	2021-09-24     	2021-09-24	2021-09-24	original
+4	0004-09-22	0004-09-22                                        	0004-09-22     	0004-09-22	0004-09-22	new
+5	1815-05-06	1815-05-06                                        	1815-05-06     	1815-05-06	1815-05-06	new
+6	2007-02-09	2007-02-09                                        	2007-02-09     	2007-02-09	2007-02-09	new
+7	2002-05-10	2002-05-10                                        	2002-05-10     	2002-05-10	2002-05-10	new
+8	6229-06-28	6229-06-28                                        	6229-06-28     	6229-06-28	6229-06-28	new
+9	5966-07-09	5966-07-09                                        	5966-07-09     	5966-07-09	5966-07-09	new
+PREHOOK: query: drop table table_change_date_group_string_group_date
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_date_group_string_group_date
+PREHOOK: Output: default@table_change_date_group_string_group_date
+POSTHOOK: query: drop table table_change_date_group_string_group_date
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_date_group_string_group_date
+POSTHOOK: Output: default@table_change_date_group_string_group_date
+PREHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: ------------------------------------------------------------------------------------------
+-- SECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP
+--
+--
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), STRING
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_string(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__15
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__15
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__15)values__tmp__table__15.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_string replace columns (insert_num int, c1 STRING, c2 STRING, c3 STRING, c4 STRING, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__16
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_string
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__16
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.b SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c1 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c2 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c3 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.c4 SIMPLE [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_string.insert_num EXPRESSION [(values__tmp__table__16)values__tmp__table__16.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=33)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=33)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=10 width=33)
+                default@table_change_numeric_group_string_group_multi_ints_string,table_change_numeric_group_string_group_multi_ints_string,Tbl:COMPLETE,Col:NONE,Output:["insert_num","c1","c2","c3","c4","b"]
+
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_string order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+10	17	90000	754072151	3289094	new
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+5	2000	72909	3244222	-93222	new
+6	1	200	2323322	5430907	new
+7	256	32768	31889	470614135	new
+8	5555	40000	-719017797	810662019	new
+9	100	5000	5443	0	new
+PREHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: query: drop table table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_string
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_string
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for NUMERIC_GROUP -> STRING_GROUP: (TINYINT, SMALLINT, INT, BIGINT), CHAR
+--
+CREATE TABLE table_change_numeric_group_string_group_multi_ints_char(insert_num int, c1 tinyint, c2 smallint, c3 int, c4 bigint, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__17
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (1, 45, 1000, 483777, -23866739993, 'original'),
+           (2, -2, -6737, 56, 28899333, 'original'),
+           (3, -255, 4957, 832222222, 9000000000, 'original'),
+           (4, 0, 20435, 847492223, -999999999999, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__17
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__17)values__tmp__table__17.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+#### A masked pattern was here ####
+insert_num	c1	c2	c3	c4	b
+1	45	1000	483777	-23866739993	original
+2	-2	-6737	56	28899333	original
+3	NULL	4957	832222222	9000000000	original
+4	0	20435	847492223	-999999999999	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table table_change_numeric_group_string_group_multi_ints_char replace columns (insert_num int, c1 CHAR(50), c2 CHAR(50), c3 CHAR(50), c4 CHAR(50), b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+PREHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__18
+PREHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: query: insert into table table_change_numeric_group_string_group_multi_ints_char
+    values (5, '2000', '72909', '3244222', '-93222', 'new'),
+           (6, '1', '200', '2323322', '5430907', 'new'),
+           (7, '256', '32768', '31889', '470614135', 'new'),
+           (8, '5555', '40000', '-719017797', '810662019', 'new'),
+           (9, '100', '5000', '5443', '0', 'new'),
+           (10, '17', '90000', '754072151', '3289094', 'new')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__18
+POSTHOOK: Output: default@table_change_numeric_group_string_group_multi_ints_char
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.b SIMPLE [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col6, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c1 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c2 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col3, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c3 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col4, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.c4 EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col5, type:string, comment:), ]
+POSTHOOK: Lineage: table_change_numeric_group_string_group_multi_ints_char.insert_num EXPRESSION [(values__tmp__table__18)values__tmp__table__18.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1	_col2	_col3	_col4	_col5
+PREHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,c1,c2,c3,c4,b from table_change_numeric_group_string_group_multi_ints_char order by insert_num
+POSTHOOK: type: QUERY
+Explain
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 2
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=10 width=140)
+          Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+        <-Map 1 [SIMPLE_EDGE]
+          SHUFFLE [RS_2]
+            Select Operator [SEL_1] (rows=10 width=140)
+              Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
+              TableScan [TS_0] (rows=1

<TRUNCATED>