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