This is an automated email from the ASF dual-hosted git repository.

ayushsaxena pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new fb154b9937c HIVE-26551: Support CREATE TABLE LIKE FILE for ORC 
(#3611). (zhangbutao,  reviewed by John Sherman, Ayush Saxena)
fb154b9937c is described below

commit fb154b9937c6abaf9279cc362121b8f62bab10b9
Author: Butao Zhang <[email protected]>
AuthorDate: Wed Sep 28 07:04:35 2022 +0800

    HIVE-26551: Support CREATE TABLE LIKE FILE for ORC (#3611). (zhangbutao,  
reviewed by John Sherman, Ayush Saxena)
---
 .../java/org/apache/hadoop/hive/ql/ErrorMsg.java   |   1 +
 .../org/apache/hadoop/hive/ql/io/orc/OrcSerde.java |  96 +++-
 .../clientpositive/create_table_like_file_orc.q    |  88 +++
 .../llap/create_table_like_file_orc.q.out          | 615 +++++++++++++++++++++
 4 files changed, 799 insertions(+), 1 deletion(-)

diff --git a/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java 
b/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
index 5b9279b76fc..1a3ad38acef 100644
--- a/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
+++ b/common/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
@@ -524,6 +524,7 @@ public enum ErrorMsg {
   CTLF_MISSING_STORAGE_FORMAT_DESCRIPTOR(20021, "Failed to find 
StorageFormatDescriptor for file format ''{0}''", true),
   PARQUET_FOOTER_ERROR(20022, "Failed to read parquet footer:"),
   PARQUET_UNHANDLED_TYPE(20023, "Unhandled type {0}", true),
+  ORC_FOOTER_ERROR(20024, "Failed to read orc footer:"),
 
   // An exception from runtime that will show the full stack to client
   UNRESOLVED_RT_EXCEPTION(29999, "Runtime Error: {0}", "58004", true),
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSerde.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSerde.java
index c660dac8ff2..4e92edee013 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSerde.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcSerde.java
@@ -20,13 +20,19 @@ package org.apache.hadoop.hive.ql.io.orc;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
+import java.util.regex.Pattern;
 
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.AbstractSerDe;
+import org.apache.hadoop.hive.serde2.SchemaInference;
 import org.apache.hadoop.hive.serde2.SerDeException;
 import org.apache.hadoop.hive.serde2.SerDeSpec;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
@@ -34,6 +40,11 @@ import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
 import org.apache.hadoop.io.Writable;
+import org.apache.orc.OrcFile;
+import org.apache.orc.Reader;
+import org.apache.orc.TypeDescription;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A serde class for ORC. It transparently passes the object to/from the ORC
@@ -41,12 +52,14 @@ import org.apache.hadoop.io.Writable;
  * size doesn't make sense in the context of ORC files.
  */
 @SerDeSpec(schemaProps = {serdeConstants.LIST_COLUMNS, 
serdeConstants.LIST_COLUMN_TYPES, OrcSerde.COMPRESSION})
-public class OrcSerde extends AbstractSerDe {
+public class OrcSerde extends AbstractSerDe implements SchemaInference {
+  private static final Logger LOG = LoggerFactory.getLogger(OrcSerde.class);
 
   private final OrcSerdeRow row = new OrcSerdeRow();
   private ObjectInspector inspector = null;
 
   static final String COMPRESSION = "orc.compress";
+  static final Pattern UNQUOTED_NAMES = Pattern.compile("^[a-zA-Z0-9_]+$");
 
   final class OrcSerdeRow implements Writable {
     Object realRow;
@@ -117,4 +130,85 @@ public class OrcSerde extends AbstractSerDe {
     return inspector;
   }
 
+  @Override
+  public List<FieldSchema> readSchema(Configuration conf, String file) throws 
SerDeException {
+    List<String> fieldNames;
+    List<TypeDescription> fieldTypes;
+    try (Reader reader = OrcFile.createReader(new Path(file), 
OrcFile.readerOptions(conf))) {
+      fieldNames = reader.getSchema().getFieldNames();
+      fieldTypes = reader.getSchema().getChildren();
+    } catch (Exception e) {
+      throw new SerDeException(ErrorMsg.ORC_FOOTER_ERROR.getErrorCodedMsg(), 
e);
+    }
+
+    List<FieldSchema> schema = new ArrayList<>();
+    for (int i = 0; i < fieldNames.size(); i++) {
+      FieldSchema fieldSchema = convertOrcTypeToFieldSchema(fieldNames.get(i), 
fieldTypes.get(i));
+      schema.add(fieldSchema);
+      LOG.debug("Inferred field schema {}", fieldSchema);
+    }
+    return schema;
+  }
+
+  private FieldSchema convertOrcTypeToFieldSchema(String fieldName, 
TypeDescription fieldType) {
+    String typeName = convertOrcTypeToFieldType(fieldType);
+    return new FieldSchema(fieldName, typeName, "Inferred from Orc file.");
+  }
+
+  private String convertOrcTypeToFieldType(TypeDescription fieldType) {
+    if (fieldType.getCategory().isPrimitive()) {
+      return convertPrimitiveType(fieldType);
+    }
+    return convertComplexType(fieldType);
+  }
+
+  private String convertPrimitiveType(TypeDescription fieldType) {
+    if (fieldType.getCategory().getName().equals("timestamp with local time 
zone")) {
+      throw new IllegalArgumentException("Unhandled ORC type " + 
fieldType.getCategory().getName());
+    }
+    return fieldType.toString();
+  }
+
+  private String convertComplexType(TypeDescription fieldType) {
+    StringBuilder buffer = new StringBuilder();
+    buffer.append(fieldType.getCategory().getName());
+    switch (fieldType.getCategory()) {
+    case LIST:
+    case MAP:
+    case UNION:
+      buffer.append('<');
+      for (int i = 0; i < fieldType.getChildren().size(); i++) {
+        if (i != 0) {
+          buffer.append(',');
+        }
+        
buffer.append(convertOrcTypeToFieldType(fieldType.getChildren().get(i)));
+      }
+      buffer.append('>');
+      break;
+    case STRUCT:
+      buffer.append('<');
+      for (int i = 0; i < fieldType.getChildren().size(); ++i) {
+        if (i != 0) {
+          buffer.append(',');
+        }
+        getStructFieldName(buffer, fieldType.getFieldNames().get(i));
+        buffer.append(':');
+        
buffer.append(convertOrcTypeToFieldType(fieldType.getChildren().get(i)));
+      }
+      buffer.append('>');
+      break;
+    default:
+      throw new IllegalArgumentException("ORC doesn't handle " +
+          fieldType.getCategory());
+    }
+    return buffer.toString();
+  }
+
+  static void getStructFieldName(StringBuilder buffer, String name) {
+    if (UNQUOTED_NAMES.matcher(name).matches()) {
+      buffer.append(name);
+    } else {
+      buffer.append('`').append(name.replace("`", "``")).append('`');
+    }
+  }
 }
diff --git a/ql/src/test/queries/clientpositive/create_table_like_file_orc.q 
b/ql/src/test/queries/clientpositive/create_table_like_file_orc.q
new file mode 100644
index 00000000000..e4ffc170b06
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/create_table_like_file_orc.q
@@ -0,0 +1,88 @@
+-- all primitive types
+-- timestamp_w_tz TIMESTAMP WITH LOCAL TIME ZONE is not supported by hive's 
orc implementation
+CREATE EXTERNAL TABLE test_all_orc_types(tinyint_type TINYINT, smallint_type 
SMALLINT, bigint_type BIGINT, int_type INT, float_type FLOAT, double_type 
double, decimal_type DECIMAL(4,2), timestamp_type TIMESTAMP, date_type DATE, 
string_type STRING, varchar_type VARCHAR(100), char_type CHAR(34), boolean_type 
BOOLEAN, binary_type BINARY) STORED AS ORC LOCATION 
'${system:test.tmp.dir}/test_all_orc_types';
+-- insert two rows (the other tables only have 1 row)
+INSERT INTO test_all_orc_types VALUES (1, 2, 3, 4, 2.2, 2.2, 20.20, 
'2022-06-30 10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', true, 
'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe');
+          SELECT * FROM test_all_orc_types;
+DESCRIBE test_all_orc_types;
+-- CREATE A LIKE table
+CREATE TABLE like_test_all_orc_types LIKE FILE ORC 
'${system:test.tmp.dir}/test_all_orc_types/000000_0';
+INSERT INTO like_test_all_orc_types VALUES (1, 2, 3, 4, 2.2, 2.2, 20.20, 
'2022-06-30 10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', true, 
'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe');
+SELECT * FROM like_test_all_orc_types;
+DESCRIBE like_test_all_orc_types;
+DROP TABLE test_all_orc_types;
+DROP TABLE like_test_all_orc_types;
+
+-- complex types (array, map, union, struct)
+-- array
+CREATE EXTERNAL TABLE test_orc_array(str_array array<string>) STORED AS ORC 
LOCATION '${system:test.tmp.dir}/test_orc_array';
+DESCRIBE test_orc_array;
+INSERT INTO test_orc_array SELECT array("bob", "sue");
+SELECT * FROM test_orc_array;
+CREATE TABLE like_test_orc_array LIKE FILE ORC 
'${system:test.tmp.dir}/test_orc_array/000000_0';
+DESCRIBE like_test_orc_array;
+INSERT INTO like_test_orc_array SELECT array("bob", "sue");
+SELECT * FROM like_test_orc_array;
+DROP TABLE like_test_orc_array;
+
+-- map
+CREATE EXTERNAL TABLE test_orc_map(simple_map map<int, string>, map_to_struct 
map<string, struct<i : int>>, map_to_map map<date,map<int, string>>, 
map_to_array map<binary, array<array<int>>>) STORED AS ORC LOCATION 
'${system:test.tmp.dir}/test_orc_map';
+DESCRIBE test_orc_map;
+INSERT INTO test_orc_map SELECT map(10, "foo"), map("bar", named_struct("i", 
99)), map(cast('1984-01-01' as date), map(10, "goodbye")), map(cast("binary" as 
binary), array(array(1,2,3)));
+SELECT * FROM test_orc_map;
+CREATE TABLE like_test_orc_map LIKE FILE ORC 
'${system:test.tmp.dir}/test_orc_map/000000_0';
+DESCRIBE like_test_orc_map;
+INSERT INTO like_test_orc_map SELECT map(10, "foo"), map("bar", 
named_struct("i", 99)), map(cast('1984-01-01' as date), map(10, "goodbye")), 
map(cast("binary" as binary), array(array(1,2,3)));
+SELECT * FROM like_test_orc_map;
+DROP TABLE like_test_orc_map;
+
+-- union
+CREATE TABLE src_tbl (key STRING, value STRING) STORED AS TEXTFILE;
+INSERT INTO src_tbl VALUES ('hello', 'world');
+CREATE TABLE test_orc_union (foo UNIONTYPE<string>) STORED AS ORC LOCATION 
'${system:test.tmp.dir}/test_orc_union';
+INSERT INTO test_orc_union SELECT create_union(0, key) FROM src_tbl LIMIT 2;
+CREATE TABLE like_test_orc_union LIKE FILE ORC 
'${system:test.tmp.dir}/test_orc_union/000000_0';
+DESCRIBE test_orc_union;
+INSERT INTO like_test_orc_union SELECT create_union(0, key) FROM src_tbl LIMIT 
2;
+SELECT * FROM like_test_orc_union;
+DROP TABLE like_test_orc_union;
+
+-- struct
+CREATE EXTERNAL TABLE test_complex_orc_struct(struct_type struct<tinyint_type 
: tinyint, smallint_type : smallint, bigint_type : bigint, int_type : int, 
float_type : float, double_type : double, decimal_type : DECIMAL(4,2), 
timestamp_type : TIMESTAMP, date_type : DATE, string_type : STRING, 
varchar_type : VARCHAR(100), char_type : CHAR(34), boolean_type : boolean, 
binary_type : binary>) STORED AS ORC LOCATION 
'${system:test.tmp.dir}/test_complex_orc_struct';
+DESCRIBE test_complex_orc_struct;
+-- disable CBO due to the fact that type conversion causes CBO failure which 
causes the test to fail
+-- non-CBO path works (HIVE-26398)
+SET hive.cbo.enable=false;
+INSERT INTO test_complex_orc_struct SELECT named_struct("tinyint_type", cast(1 
as tinyint), "smallint_type", cast(2 as smallint), "bigint_type", cast(3 as 
bigint), "int_type", 4, "float_type", cast(2.2 as float), "double_type", 
cast(2.2 as double), "decimal_type", cast(20.22 as decimal(4,2)), 
"timestamp_type", cast('2022-06-30 10:20:30' as timestamp), "date_type", 
cast('2020-04-23' as date), "string_type", 'str1', "varchar_type", 
cast('varchar1' as varchar(100)), "char_type", cast('char' [...]
+SET hive.cbo.enable=true;
+SELECT * FROM test_complex_orc_struct;
+CREATE TABLE like_test_complex_orc_struct LIKE FILE ORC 
'${system:test.tmp.dir}/test_complex_orc_struct/000000_0';
+DESCRIBE like_test_complex_orc_struct;
+-- disable CBO due to the fact that type conversion causes CBO failure which 
causes the test to fail
+-- non-CBO path works (HIVE-26398)
+SET hive.cbo.enable=false;
+INSERT INTO like_test_complex_orc_struct SELECT named_struct("tinyint_type", 
cast(1 as tinyint), "smallint_type", cast(2 as smallint), "bigint_type", cast(3 
as bigint), "int_type", 4, "float_type", cast(2.2 as float), "double_type", 
cast(2.2 as double), "decimal_type", cast(20.22 as decimal(4,2)), 
"timestamp_type", cast('2022-06-30 10:20:30' as timestamp), "date_type", 
cast('2020-04-23' as date), "string_type", 'str1', "varchar_type", 
cast('varchar1' as varchar(100)), "char_type", cast(' [...]
+SET hive.cbo.enable=true;
+SELECT * FROM like_test_complex_orc_struct;
+DROP TABLE like_test_complex_orc_struct;
+
+-- test complex types that contain other complex types
+CREATE EXTERNAL TABLE test_orc_complex_complex(struct_type struct<i : int, s : 
string, m : map<string, array<int>>, struct_i : struct<str : string>>) STORED 
AS ORC LOCATION '${system:test.tmp.dir}/test_orc_complex_complex';
+DESCRIBE test_orc_complex_complex;
+INSERT INTO test_orc_complex_complex SELECT named_struct("i", 10, "s", "hello, 
world", "m", map("arr", array(1,2,3,4)), "struct_i", named_struct("str", 
"test_str"));
+SELECT * FROM test_orc_complex_complex;
+CREATE TABLE like_test_orc_complex_complex LIKE FILE ORC 
'${system:test.tmp.dir}/test_orc_complex_complex/000000_0';
+DESCRIBE like_test_orc_complex_complex;
+INSERT INTO like_test_orc_complex_complex SELECT named_struct("i", 10, "s", 
"hello, world", "m", map("arr", array(1,2,3,4)), "struct_i", 
named_struct("str", "test_str"));
+SELECT * FROM like_test_orc_complex_complex;
+DROP TABLE like_test_orc_complex_complex;
+
+-- test adding partitioning to the destination table
+CREATE TABLE like_test_orc_partitioning LIKE FILE ORC 
'${system:test.tmp.dir}/test_all_orc_types/000000_0' PARTITIONED BY (year 
STRING, month STRING);
+DESCRIBE like_test_orc_partitioning;
+INSERT INTO like_test_orc_partitioning PARTITION (year='1984', month='1') 
VALUES (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe');
+SELECT * FROM like_test_orc_partitioning;
+DROP TABLE like_test_orc_partitioning;
\ No newline at end of file
diff --git 
a/ql/src/test/results/clientpositive/llap/create_table_like_file_orc.q.out 
b/ql/src/test/results/clientpositive/llap/create_table_like_file_orc.q.out
new file mode 100644
index 00000000000..fffd1502bee
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/create_table_like_file_orc.q.out
@@ -0,0 +1,615 @@
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_all_orc_types
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_all_orc_types
+PREHOOK: query: INSERT INTO test_all_orc_types VALUES (1, 2, 3, 4, 2.2, 2.2, 
20.20, '2022-06-30 10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', true, 
'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@test_all_orc_types
+POSTHOOK: query: INSERT INTO test_all_orc_types VALUES (1, 2, 3, 4, 2.2, 2.2, 
20.20, '2022-06-30 10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', true, 
'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@test_all_orc_types
+POSTHOOK: Lineage: test_all_orc_types.bigint_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.binary_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.boolean_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.char_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.date_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.decimal_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.double_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.float_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.int_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.smallint_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.string_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.timestamp_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.tinyint_type SCRIPT []
+POSTHOOK: Lineage: test_all_orc_types.varchar_type SCRIPT []
+PREHOOK: query: SELECT * FROM test_all_orc_types
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_all_orc_types
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_all_orc_types
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_all_orc_types
+#### A masked pattern was here ####
+1      2       3       4       2.2     2.2     20.20   2022-06-30 10:20:30     
2020-04-23      str1    varchar1        char                                    
true    binary_maybe
+1      2       3       4       2.2     2.2     20.20   2022-06-30 10:20:30     
2020-04-23      str1    varchar1        char                                    
true    binary_maybe
+PREHOOK: query: DESCRIBE test_all_orc_types
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@test_all_orc_types
+POSTHOOK: query: DESCRIBE test_all_orc_types
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@test_all_orc_types
+tinyint_type           tinyint                                     
+smallint_type          smallint                                    
+bigint_type            bigint                                      
+int_type               int                                         
+float_type             float                                       
+double_type            double                                      
+decimal_type           decimal(4,2)                                
+timestamp_type         timestamp                                   
+date_type              date                                        
+string_type            string                                      
+varchar_type           varchar(100)                                
+char_type              char(34)                                    
+boolean_type           boolean                                     
+binary_type            binary                                      
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_all_orc_types
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_all_orc_types
+PREHOOK: query: INSERT INTO like_test_all_orc_types VALUES (1, 2, 3, 4, 2.2, 
2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', 
true, 'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@like_test_all_orc_types
+POSTHOOK: query: INSERT INTO like_test_all_orc_types VALUES (1, 2, 3, 4, 2.2, 
2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', 
true, 'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@like_test_all_orc_types
+POSTHOOK: Lineage: like_test_all_orc_types.bigint_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.binary_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.boolean_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.char_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.date_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.decimal_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.double_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.float_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.int_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.smallint_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.string_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.timestamp_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.tinyint_type SCRIPT []
+POSTHOOK: Lineage: like_test_all_orc_types.varchar_type SCRIPT []
+PREHOOK: query: SELECT * FROM like_test_all_orc_types
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_all_orc_types
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_all_orc_types
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_all_orc_types
+#### A masked pattern was here ####
+1      2       3       4       2.2     2.2     20.20   2022-06-30 10:20:30     
2020-04-23      str1    varchar1        char                                    
true    binary_maybe
+1      2       3       4       2.2     2.2     20.20   2022-06-30 10:20:30     
2020-04-23      str1    varchar1        char                                    
true    binary_maybe
+PREHOOK: query: DESCRIBE like_test_all_orc_types
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@like_test_all_orc_types
+POSTHOOK: query: DESCRIBE like_test_all_orc_types
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@like_test_all_orc_types
+tinyint_type           tinyint                 Inferred from Orc file.
+smallint_type          smallint                Inferred from Orc file.
+bigint_type            bigint                  Inferred from Orc file.
+int_type               int                     Inferred from Orc file.
+float_type             float                   Inferred from Orc file.
+double_type            double                  Inferred from Orc file.
+decimal_type           decimal(4,2)            Inferred from Orc file.
+timestamp_type         timestamp               Inferred from Orc file.
+date_type              date                    Inferred from Orc file.
+string_type            string                  Inferred from Orc file.
+varchar_type           varchar(100)            Inferred from Orc file.
+char_type              char(34)                Inferred from Orc file.
+boolean_type           boolean                 Inferred from Orc file.
+binary_type            binary                  Inferred from Orc file.
+PREHOOK: query: DROP TABLE test_all_orc_types
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@test_all_orc_types
+PREHOOK: Output: default@test_all_orc_types
+POSTHOOK: query: DROP TABLE test_all_orc_types
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@test_all_orc_types
+POSTHOOK: Output: default@test_all_orc_types
+PREHOOK: query: DROP TABLE like_test_all_orc_types
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_all_orc_types
+PREHOOK: Output: default@like_test_all_orc_types
+POSTHOOK: query: DROP TABLE like_test_all_orc_types
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_all_orc_types
+POSTHOOK: Output: default@like_test_all_orc_types
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_orc_array
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_orc_array
+PREHOOK: query: DESCRIBE test_orc_array
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@test_orc_array
+POSTHOOK: query: DESCRIBE test_orc_array
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@test_orc_array
+str_array              array<string>                               
+PREHOOK: query: INSERT INTO test_orc_array SELECT array("bob", "sue")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@test_orc_array
+POSTHOOK: query: INSERT INTO test_orc_array SELECT array("bob", "sue")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@test_orc_array
+POSTHOOK: Lineage: test_orc_array.str_array EXPRESSION []
+PREHOOK: query: SELECT * FROM test_orc_array
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_orc_array
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_orc_array
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_orc_array
+#### A masked pattern was here ####
+["bob","sue"]
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_orc_array
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_orc_array
+PREHOOK: query: DESCRIBE like_test_orc_array
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@like_test_orc_array
+POSTHOOK: query: DESCRIBE like_test_orc_array
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@like_test_orc_array
+str_array              array<string>           Inferred from Orc file.
+PREHOOK: query: INSERT INTO like_test_orc_array SELECT array("bob", "sue")
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@like_test_orc_array
+POSTHOOK: query: INSERT INTO like_test_orc_array SELECT array("bob", "sue")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@like_test_orc_array
+POSTHOOK: Lineage: like_test_orc_array.str_array EXPRESSION []
+PREHOOK: query: SELECT * FROM like_test_orc_array
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_orc_array
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_orc_array
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_orc_array
+#### A masked pattern was here ####
+["bob","sue"]
+PREHOOK: query: DROP TABLE like_test_orc_array
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_orc_array
+PREHOOK: Output: default@like_test_orc_array
+POSTHOOK: query: DROP TABLE like_test_orc_array
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_orc_array
+POSTHOOK: Output: default@like_test_orc_array
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_orc_map
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_orc_map
+PREHOOK: query: DESCRIBE test_orc_map
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@test_orc_map
+POSTHOOK: query: DESCRIBE test_orc_map
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@test_orc_map
+simple_map             map<int,string>                             
+map_to_struct          map<string,struct<i:int>>                           
+map_to_map             map<date,map<int,string>>                           
+map_to_array           map<binary,array<array<int>>>                       
+PREHOOK: query: INSERT INTO test_orc_map SELECT map(10, "foo"), map("bar", 
named_struct("i", 99)), map(cast('1984-01-01' as date), map(10, "goodbye")), 
map(cast("binary" as binary), array(array(1,2,3)))
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@test_orc_map
+POSTHOOK: query: INSERT INTO test_orc_map SELECT map(10, "foo"), map("bar", 
named_struct("i", 99)), map(cast('1984-01-01' as date), map(10, "goodbye")), 
map(cast("binary" as binary), array(array(1,2,3)))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@test_orc_map
+POSTHOOK: Lineage: test_orc_map.map_to_array EXPRESSION []
+POSTHOOK: Lineage: test_orc_map.map_to_map EXPRESSION []
+POSTHOOK: Lineage: test_orc_map.map_to_struct EXPRESSION []
+POSTHOOK: Lineage: test_orc_map.simple_map EXPRESSION []
+PREHOOK: query: SELECT * FROM test_orc_map
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_orc_map
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_orc_map
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_orc_map
+#### A masked pattern was here ####
+{10:"foo"}     {"bar":{"i":99}}        {"1984-01-01":{10:"goodbye"}}   
{binary:[[1,2,3]]}
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_orc_map
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_orc_map
+PREHOOK: query: DESCRIBE like_test_orc_map
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@like_test_orc_map
+POSTHOOK: query: DESCRIBE like_test_orc_map
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@like_test_orc_map
+simple_map             map<int,string>         Inferred from Orc file.
+map_to_struct          map<string,struct<i:int>>       Inferred from Orc file.
+map_to_map             map<date,map<int,string>>       Inferred from Orc file.
+map_to_array           map<binary,array<array<int>>>   Inferred from Orc file.
+PREHOOK: query: INSERT INTO like_test_orc_map SELECT map(10, "foo"), 
map("bar", named_struct("i", 99)), map(cast('1984-01-01' as date), map(10, 
"goodbye")), map(cast("binary" as binary), array(array(1,2,3)))
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@like_test_orc_map
+POSTHOOK: query: INSERT INTO like_test_orc_map SELECT map(10, "foo"), 
map("bar", named_struct("i", 99)), map(cast('1984-01-01' as date), map(10, 
"goodbye")), map(cast("binary" as binary), array(array(1,2,3)))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@like_test_orc_map
+POSTHOOK: Lineage: like_test_orc_map.map_to_array EXPRESSION []
+POSTHOOK: Lineage: like_test_orc_map.map_to_map EXPRESSION []
+POSTHOOK: Lineage: like_test_orc_map.map_to_struct EXPRESSION []
+POSTHOOK: Lineage: like_test_orc_map.simple_map EXPRESSION []
+PREHOOK: query: SELECT * FROM like_test_orc_map
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_orc_map
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_orc_map
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_orc_map
+#### A masked pattern was here ####
+{10:"foo"}     {"bar":{"i":99}}        {"1984-01-01":{10:"goodbye"}}   
{binary:[[1,2,3]]}
+PREHOOK: query: DROP TABLE like_test_orc_map
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_orc_map
+PREHOOK: Output: default@like_test_orc_map
+POSTHOOK: query: DROP TABLE like_test_orc_map
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_orc_map
+POSTHOOK: Output: default@like_test_orc_map
+PREHOOK: query: CREATE TABLE src_tbl (key STRING, value STRING) STORED AS 
TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_tbl
+POSTHOOK: query: CREATE TABLE src_tbl (key STRING, value STRING) STORED AS 
TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_tbl
+PREHOOK: query: INSERT INTO src_tbl VALUES ('hello', 'world')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@src_tbl
+POSTHOOK: query: INSERT INTO src_tbl VALUES ('hello', 'world')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@src_tbl
+POSTHOOK: Lineage: src_tbl.key SCRIPT []
+POSTHOOK: Lineage: src_tbl.value SCRIPT []
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_orc_union
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_orc_union
+PREHOOK: query: INSERT INTO test_orc_union SELECT create_union(0, key) FROM 
src_tbl LIMIT 2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src_tbl
+PREHOOK: Output: default@test_orc_union
+POSTHOOK: query: INSERT INTO test_orc_union SELECT create_union(0, key) FROM 
src_tbl LIMIT 2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src_tbl
+POSTHOOK: Output: default@test_orc_union
+POSTHOOK: Lineage: test_orc_union.foo EXPRESSION 
[(src_tbl)src_tbl.FieldSchema(name:key, type:string, comment:null), ]
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_orc_union
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_orc_union
+PREHOOK: query: DESCRIBE test_orc_union
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@test_orc_union
+POSTHOOK: query: DESCRIBE test_orc_union
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@test_orc_union
+foo                    uniontype<string>                           
+PREHOOK: query: INSERT INTO like_test_orc_union SELECT create_union(0, key) 
FROM src_tbl LIMIT 2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src_tbl
+PREHOOK: Output: default@like_test_orc_union
+POSTHOOK: query: INSERT INTO like_test_orc_union SELECT create_union(0, key) 
FROM src_tbl LIMIT 2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src_tbl
+POSTHOOK: Output: default@like_test_orc_union
+POSTHOOK: Lineage: like_test_orc_union.foo EXPRESSION 
[(src_tbl)src_tbl.FieldSchema(name:key, type:string, comment:null), ]
+PREHOOK: query: SELECT * FROM like_test_orc_union
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_orc_union
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_orc_union
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_orc_union
+#### A masked pattern was here ####
+{0:"hello"}
+PREHOOK: query: DROP TABLE like_test_orc_union
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_orc_union
+PREHOOK: Output: default@like_test_orc_union
+POSTHOOK: query: DROP TABLE like_test_orc_union
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_orc_union
+POSTHOOK: Output: default@like_test_orc_union
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_complex_orc_struct
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_complex_orc_struct
+PREHOOK: query: DESCRIBE test_complex_orc_struct
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@test_complex_orc_struct
+POSTHOOK: query: DESCRIBE test_complex_orc_struct
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@test_complex_orc_struct
+struct_type            
struct<tinyint_type:tinyint,smallint_type:smallint,bigint_type:bigint,int_type:int,float_type:float,double_type:double,decimal_type:decimal(4,2),timestamp_type:timestamp,date_type:date,string_type:string,varchar_type:varchar(100),char_type:char(34),boolean_type:boolean,binary_type:binary>
                           
+PREHOOK: query: INSERT INTO test_complex_orc_struct SELECT 
named_struct("tinyint_type", cast(1 as tinyint), "smallint_type", cast(2 as 
smallint), "bigint_type", cast(3 as bigint), "int_type", 4, "float_type", 
cast(2.2 as float), "double_type", cast(2.2 as double), "decimal_type", 
cast(20.22 as decimal(4,2)), "timestamp_type", cast('2022-06-30 10:20:30' as 
timestamp), "date_type", cast('2020-04-23' as date), "string_type", 'str1', 
"varchar_type", cast('varchar1' as varchar(100)), "char_ty [...]
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@test_complex_orc_struct
+POSTHOOK: query: INSERT INTO test_complex_orc_struct SELECT 
named_struct("tinyint_type", cast(1 as tinyint), "smallint_type", cast(2 as 
smallint), "bigint_type", cast(3 as bigint), "int_type", 4, "float_type", 
cast(2.2 as float), "double_type", cast(2.2 as double), "decimal_type", 
cast(20.22 as decimal(4,2)), "timestamp_type", cast('2022-06-30 10:20:30' as 
timestamp), "date_type", cast('2020-04-23' as date), "string_type", 'str1', 
"varchar_type", cast('varchar1' as varchar(100)), "char_t [...]
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@test_complex_orc_struct
+POSTHOOK: Lineage: test_complex_orc_struct.struct_type EXPRESSION []
+PREHOOK: query: SELECT * FROM test_complex_orc_struct
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_complex_orc_struct
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_complex_orc_struct
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_complex_orc_struct
+#### A masked pattern was here ####
+{"tinyint_type":1,"smallint_type":2,"bigint_type":3,"int_type":4,"float_type":2.2,"double_type":2.2,"decimal_type":20.22,"timestamp_type":"2022-06-30
 
10:20:30","date_type":"2020-04-23","string_type":"str1","varchar_type":"varchar1","char_type":"char
                              ","boolean_type":true,"binary_type":binary_maybe}
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_complex_orc_struct
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_complex_orc_struct
+PREHOOK: query: DESCRIBE like_test_complex_orc_struct
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@like_test_complex_orc_struct
+POSTHOOK: query: DESCRIBE like_test_complex_orc_struct
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@like_test_complex_orc_struct
+struct_type            
struct<tinyint_type:tinyint,smallint_type:smallint,bigint_type:bigint,int_type:int,float_type:float,double_type:double,decimal_type:decimal(4,2),timestamp_type:timestamp,date_type:date,string_type:string,varchar_type:varchar(100),char_type:char(34),boolean_type:boolean,binary_type:binary>
       Inferred from Orc file.
+PREHOOK: query: INSERT INTO like_test_complex_orc_struct SELECT 
named_struct("tinyint_type", cast(1 as tinyint), "smallint_type", cast(2 as 
smallint), "bigint_type", cast(3 as bigint), "int_type", 4, "float_type", 
cast(2.2 as float), "double_type", cast(2.2 as double), "decimal_type", 
cast(20.22 as decimal(4,2)), "timestamp_type", cast('2022-06-30 10:20:30' as 
timestamp), "date_type", cast('2020-04-23' as date), "string_type", 'str1', 
"varchar_type", cast('varchar1' as varchar(100)), "ch [...]
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@like_test_complex_orc_struct
+POSTHOOK: query: INSERT INTO like_test_complex_orc_struct SELECT 
named_struct("tinyint_type", cast(1 as tinyint), "smallint_type", cast(2 as 
smallint), "bigint_type", cast(3 as bigint), "int_type", 4, "float_type", 
cast(2.2 as float), "double_type", cast(2.2 as double), "decimal_type", 
cast(20.22 as decimal(4,2)), "timestamp_type", cast('2022-06-30 10:20:30' as 
timestamp), "date_type", cast('2020-04-23' as date), "string_type", 'str1', 
"varchar_type", cast('varchar1' as varchar(100)), "c [...]
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@like_test_complex_orc_struct
+POSTHOOK: Lineage: like_test_complex_orc_struct.struct_type EXPRESSION []
+PREHOOK: query: SELECT * FROM like_test_complex_orc_struct
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_complex_orc_struct
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_complex_orc_struct
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_complex_orc_struct
+#### A masked pattern was here ####
+{"tinyint_type":1,"smallint_type":2,"bigint_type":3,"int_type":4,"float_type":2.2,"double_type":2.2,"decimal_type":20.22,"timestamp_type":"2022-06-30
 
10:20:30","date_type":"2020-04-23","string_type":"str1","varchar_type":"varchar1","char_type":"char
                              ","boolean_type":true,"binary_type":binary_maybe}
+PREHOOK: query: DROP TABLE like_test_complex_orc_struct
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_complex_orc_struct
+PREHOOK: Output: default@like_test_complex_orc_struct
+POSTHOOK: query: DROP TABLE like_test_complex_orc_struct
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_complex_orc_struct
+POSTHOOK: Output: default@like_test_complex_orc_struct
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+PREHOOK: Output: database:default
+PREHOOK: Output: default@test_orc_complex_complex
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+#### A masked pattern was here ####
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@test_orc_complex_complex
+PREHOOK: query: DESCRIBE test_orc_complex_complex
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@test_orc_complex_complex
+POSTHOOK: query: DESCRIBE test_orc_complex_complex
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@test_orc_complex_complex
+struct_type            
struct<i:int,s:string,m:map<string,array<int>>,struct_i:struct<str:string>>     
                    
+PREHOOK: query: INSERT INTO test_orc_complex_complex SELECT named_struct("i", 
10, "s", "hello, world", "m", map("arr", array(1,2,3,4)), "struct_i", 
named_struct("str", "test_str"))
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@test_orc_complex_complex
+POSTHOOK: query: INSERT INTO test_orc_complex_complex SELECT named_struct("i", 
10, "s", "hello, world", "m", map("arr", array(1,2,3,4)), "struct_i", 
named_struct("str", "test_str"))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@test_orc_complex_complex
+POSTHOOK: Lineage: test_orc_complex_complex.struct_type EXPRESSION []
+PREHOOK: query: SELECT * FROM test_orc_complex_complex
+PREHOOK: type: QUERY
+PREHOOK: Input: default@test_orc_complex_complex
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM test_orc_complex_complex
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@test_orc_complex_complex
+#### A masked pattern was here ####
+{"i":10,"s":"hello, world","m":{"arr":[1,2,3,4]},"struct_i":{"str":"test_str"}}
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_orc_complex_complex
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_orc_complex_complex
+PREHOOK: query: DESCRIBE like_test_orc_complex_complex
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@like_test_orc_complex_complex
+POSTHOOK: query: DESCRIBE like_test_orc_complex_complex
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@like_test_orc_complex_complex
+struct_type            
struct<i:int,s:string,m:map<string,array<int>>,struct_i:struct<str:string>>     
Inferred from Orc file.
+PREHOOK: query: INSERT INTO like_test_orc_complex_complex SELECT 
named_struct("i", 10, "s", "hello, world", "m", map("arr", array(1,2,3,4)), 
"struct_i", named_struct("str", "test_str"))
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@like_test_orc_complex_complex
+POSTHOOK: query: INSERT INTO like_test_orc_complex_complex SELECT 
named_struct("i", 10, "s", "hello, world", "m", map("arr", array(1,2,3,4)), 
"struct_i", named_struct("str", "test_str"))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@like_test_orc_complex_complex
+POSTHOOK: Lineage: like_test_orc_complex_complex.struct_type EXPRESSION []
+PREHOOK: query: SELECT * FROM like_test_orc_complex_complex
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_orc_complex_complex
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_orc_complex_complex
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_orc_complex_complex
+#### A masked pattern was here ####
+{"i":10,"s":"hello, world","m":{"arr":[1,2,3,4]},"struct_i":{"str":"test_str"}}
+PREHOOK: query: DROP TABLE like_test_orc_complex_complex
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_orc_complex_complex
+PREHOOK: Output: default@like_test_orc_complex_complex
+POSTHOOK: query: DROP TABLE like_test_orc_complex_complex
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_orc_complex_complex
+POSTHOOK: Output: default@like_test_orc_complex_complex
+#### A masked pattern was here ####
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@like_test_orc_partitioning
+#### A masked pattern was here ####
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@like_test_orc_partitioning
+PREHOOK: query: DESCRIBE like_test_orc_partitioning
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@like_test_orc_partitioning
+POSTHOOK: query: DESCRIBE like_test_orc_partitioning
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@like_test_orc_partitioning
+tinyint_type           tinyint                 Inferred from Orc file.
+smallint_type          smallint                Inferred from Orc file.
+bigint_type            bigint                  Inferred from Orc file.
+int_type               int                     Inferred from Orc file.
+float_type             float                   Inferred from Orc file.
+double_type            double                  Inferred from Orc file.
+decimal_type           decimal(4,2)            Inferred from Orc file.
+timestamp_type         timestamp               Inferred from Orc file.
+date_type              date                    Inferred from Orc file.
+string_type            string                  Inferred from Orc file.
+varchar_type           varchar(100)            Inferred from Orc file.
+char_type              char(34)                Inferred from Orc file.
+boolean_type           boolean                 Inferred from Orc file.
+binary_type            binary                  Inferred from Orc file.
+year                   string                                      
+month                  string                                      
+                
+# Partition Information                 
+# col_name             data_type               comment             
+year                   string                                      
+month                  string                                      
+PREHOOK: query: INSERT INTO like_test_orc_partitioning PARTITION (year='1984', 
month='1') VALUES (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', 
'2020-04-23', 'str1', 'varchar1', 'char', true, 'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe')
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@like_test_orc_partitioning@year=1984/month=1
+POSTHOOK: query: INSERT INTO like_test_orc_partitioning PARTITION 
(year='1984', month='1') VALUES (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 
10:20:30', '2020-04-23', 'str1', 'varchar1', 'char', true, 'binary_maybe'),
+       (1, 2, 3, 4, 2.2, 2.2, 20.20, '2022-06-30 10:20:30', '2020-04-23', 
'str1', 'varchar1', 'char', true, 'binary_maybe')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@like_test_orc_partitioning@year=1984/month=1
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).bigint_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).binary_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).boolean_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).char_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).date_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).decimal_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).double_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).float_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).int_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).smallint_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).string_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).timestamp_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).tinyint_type SCRIPT []
+POSTHOOK: Lineage: like_test_orc_partitioning 
PARTITION(year=1984,month=1).varchar_type SCRIPT []
+PREHOOK: query: SELECT * FROM like_test_orc_partitioning
+PREHOOK: type: QUERY
+PREHOOK: Input: default@like_test_orc_partitioning
+PREHOOK: Input: default@like_test_orc_partitioning@year=1984/month=1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM like_test_orc_partitioning
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@like_test_orc_partitioning
+POSTHOOK: Input: default@like_test_orc_partitioning@year=1984/month=1
+#### A masked pattern was here ####
+1      2       3       4       2.2     2.2     20.20   2022-06-30 10:20:30     
2020-04-23      str1    varchar1        char                                    
true    binary_maybe    1984    1
+1      2       3       4       2.2     2.2     20.20   2022-06-30 10:20:30     
2020-04-23      str1    varchar1        char                                    
true    binary_maybe    1984    1
+PREHOOK: query: DROP TABLE like_test_orc_partitioning
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@like_test_orc_partitioning
+PREHOOK: Output: default@like_test_orc_partitioning
+POSTHOOK: query: DROP TABLE like_test_orc_partitioning
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@like_test_orc_partitioning
+POSTHOOK: Output: default@like_test_orc_partitioning

Reply via email to