diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index 898b6a5..ffc01e5 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -341,10 +341,14 @@ UDFToShort.class.getSimpleName()); registerUDF(serdeConstants.INT_TYPE_NAME, UDFToInteger.class, false, UDFToInteger.class.getSimpleName()); + registerUDF("integer", UDFToInteger.class, false, + UDFToInteger.class.getSimpleName()); registerUDF(serdeConstants.BIGINT_TYPE_NAME, UDFToLong.class, false, UDFToLong.class.getSimpleName()); registerUDF(serdeConstants.FLOAT_TYPE_NAME, UDFToFloat.class, false, UDFToFloat.class.getSimpleName()); + registerUDF("real", UDFToFloat.class, false, + UDFToFloat.class.getSimpleName()); registerUDF(serdeConstants.DOUBLE_TYPE_NAME, UDFToDouble.class, false, UDFToDouble.class.getSimpleName()); registerUDF(serdeConstants.STRING_TYPE_NAME, UDFToString.class, false, @@ -358,6 +362,8 @@ GenericUDFToBinary.class); registerGenericUDF(serdeConstants.DECIMAL_TYPE_NAME, GenericUDFToDecimal.class); + registerGenericUDF("numeric", + GenericUDFToDecimal.class); registerGenericUDF(serdeConstants.VARCHAR_TYPE_NAME, GenericUDFToVarchar.class); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g index ca667d4..9114912 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveLexer.g @@ -97,13 +97,17 @@ KW_BOOLEAN: 'BOOLEAN'; KW_TINYINT: 'TINYINT'; KW_SMALLINT: 'SMALLINT'; KW_INT: 'INT'; +KW_INTEGER: 'INTEGER'; KW_BIGINT: 'BIGINT'; KW_FLOAT: 'FLOAT'; +KW_REAL: 'REAL'; KW_DOUBLE: 'DOUBLE'; +KW_PRECISION: 'PRECISION'; KW_DATE: 'DATE'; KW_DATETIME: 'DATETIME'; KW_TIMESTAMP: 'TIMESTAMP'; KW_DECIMAL: 'DECIMAL'; +KW_NUMERIC: 'NUMERIC'; KW_STRING: 'STRING'; KW_VARCHAR: 'VARCHAR'; KW_ARRAY: 'ARRAY'; @@ -262,6 +266,11 @@ KW_USER: 'USER'; KW_ROLE: 'ROLE'; KW_INNER: 'INNER'; KW_EXCHANGE: 'EXCHANGE'; +KW_BLOB: 'BLOB'; +KW_CLOB: 'CLOB'; +KW_CHARACTER: 'CHARACTER'; +KW_LARGE: 'LARGE'; +KW_OBJECT: 'OBJECT'; // Operators // NOTE: if you add a new function/operator, add it to sysFuncNames so that describe function _FUNC_ will work. diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index b8b84e5..f4d67f0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -384,12 +384,17 @@ import java.util.HashMap; xlateMap.put("KW_TINYINT", "TINYINT"); xlateMap.put("KW_SMALLINT", "SMALLINT"); xlateMap.put("KW_INT", "INT"); + xlateMap.put("KW_INTEGER", "INTEGER"); xlateMap.put("KW_BIGINT", "BIGINT"); xlateMap.put("KW_FLOAT", "FLOAT"); + xlateMap.put("KW_REAL", "REAL"); xlateMap.put("KW_DOUBLE", "DOUBLE"); + xlateMap.put("KW_PRECISION", "PRECISION"); xlateMap.put("KW_DATE", "DATE"); xlateMap.put("KW_DATETIME", "DATETIME"); xlateMap.put("KW_TIMESTAMP", "TIMESTAMP"); + xlateMap.put("KW_DECIMAL", "DECIMAL"); + xlateMap.put("KW_NUMERIC", "NUMERIC"); xlateMap.put("KW_STRING", "STRING"); xlateMap.put("KW_BINARY", "BINARY"); xlateMap.put("KW_ARRAY", "ARRAY"); @@ -438,6 +443,11 @@ import java.util.HashMap; xlateMap.put("KW_PROPERTIES", "TBLPROPERTIES"); xlateMap.put("KW_VALUE_TYPE", "\$VALUE\$"); xlateMap.put("KW_ELEM_TYPE", "\$ELEM\$"); + xlateMap.put("KW_BLOB", "BLOB"); + xlateMap.put("KW_CLOB", "CLOB"); + xlateMap.put("KW_CHARACTER", "CHARACTER"); + xlateMap.put("KW_LARGE", "LARGE"); + xlateMap.put("KW_OBJECT", "OBJECT"); // Operators xlateMap.put("DOT", "."); @@ -1769,20 +1779,44 @@ primitiveType @after { msgs.pop(); } : KW_TINYINT -> TOK_TINYINT | KW_SMALLINT -> TOK_SMALLINT - | KW_INT -> TOK_INT + | intType -> TOK_INT | KW_BIGINT -> TOK_BIGINT | KW_BOOLEAN -> TOK_BOOLEAN - | KW_FLOAT -> TOK_FLOAT - | KW_DOUBLE -> TOK_DOUBLE + | floatType -> TOK_FLOAT + | doubleType -> TOK_DOUBLE | KW_DATE -> TOK_DATE | KW_DATETIME -> TOK_DATETIME | KW_TIMESTAMP -> TOK_TIMESTAMP - | KW_STRING -> TOK_STRING - | KW_BINARY -> TOK_BINARY - | KW_DECIMAL (LPAREN prec=Number (COMMA scale=Number)? RPAREN)? -> ^(TOK_DECIMAL $prec? $scale?) + | stringType -> TOK_STRING + | binaryType -> TOK_BINARY + | decimalType (LPAREN prec=Number (COMMA scale=Number)? RPAREN)? -> ^(TOK_DECIMAL $prec? $scale?) | KW_VARCHAR LPAREN length=Number RPAREN -> ^(TOK_VARCHAR $length) ; +intType + : KW_INT + | KW_INTEGER; + +doubleType + : KW_DOUBLE (KW_PRECISION)?; + +decimalType + : KW_DECIMAL + | KW_NUMERIC; + +floatType + : KW_FLOAT + | KW_REAL; + +binaryType + : KW_BINARY (KW_LARGE KW_OBJECT)? + | KW_BLOB; + +stringType + : KW_STRING + | KW_CLOB + | KW_CHARACTER KW_LARGE KW_OBJECT; + listType @init { msgs.push("list type"); } @after { msgs.pop(); } diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g index 8cf5ad6..ebe7bb7 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g @@ -487,9 +487,13 @@ sysFuncNames | KW_TINYINT | KW_SMALLINT | KW_INT + | KW_INTEGER | KW_BIGINT | KW_FLOAT + | KW_REAL | KW_DOUBLE + | KW_DECIMAL + | KW_NUMERIC | KW_BOOLEAN | KW_STRING | KW_BINARY @@ -535,5 +539,5 @@ identifier nonReserved : - KW_TRUE | KW_FALSE | KW_LIKE | KW_EXISTS | KW_ASC | KW_DESC | KW_ORDER | KW_GROUP | KW_BY | KW_AS | KW_INSERT | KW_OVERWRITE | KW_OUTER | KW_LEFT | KW_RIGHT | KW_FULL | KW_PARTITION | KW_PARTITIONS | KW_TABLE | KW_TABLES | KW_COLUMNS | KW_INDEX | KW_INDEXES | KW_REBUILD | KW_FUNCTIONS | KW_SHOW | KW_MSCK | KW_REPAIR | KW_DIRECTORY | KW_LOCAL | KW_USING | KW_CLUSTER | KW_DISTRIBUTE | KW_SORT | KW_UNION | KW_LOAD | KW_EXPORT | KW_IMPORT | KW_DATA | KW_INPATH | KW_IS | KW_NULL | KW_CREATE | KW_EXTERNAL | KW_ALTER | KW_CHANGE | KW_FIRST | KW_AFTER | KW_DESCRIBE | KW_DROP | KW_RENAME | KW_IGNORE | KW_PROTECTION | KW_TO | KW_COMMENT | KW_BOOLEAN | KW_TINYINT | KW_SMALLINT | KW_INT | KW_BIGINT | KW_FLOAT | KW_DOUBLE | KW_DATE | KW_DATETIME | KW_TIMESTAMP | KW_DECIMAL | KW_STRING | KW_ARRAY | KW_STRUCT | KW_UNIONTYPE | KW_PARTITIONED | KW_CLUSTERED | KW_SORTED | KW_INTO | KW_BUCKETS | KW_ROW | KW_ROWS | KW_FORMAT | KW_DELIMITED | KW_FIELDS | KW_TERMINATED | KW_ESCAPED | KW_COLLECTION | KW_ITEMS | KW_KEYS | KW_KEY_TYPE | KW_LINES | KW_STORED | KW_FILEFORMAT | KW_SEQUENCEFILE | KW_TEXTFILE | KW_RCFILE | KW_ORCFILE | KW_INPUTFORMAT | KW_OUTPUTFORMAT | KW_INPUTDRIVER | KW_OUTPUTDRIVER | KW_OFFLINE | KW_ENABLE | KW_DISABLE | KW_READONLY | KW_NO_DROP | KW_LOCATION | KW_BUCKET | KW_OUT | KW_OF | KW_PERCENT | KW_ADD | KW_REPLACE | KW_RLIKE | KW_REGEXP | KW_TEMPORARY | KW_EXPLAIN | KW_FORMATTED | KW_PRETTY | KW_DEPENDENCY | KW_LOGICAL | KW_SERDE | KW_WITH | KW_DEFERRED | KW_SERDEPROPERTIES | KW_DBPROPERTIES | KW_LIMIT | KW_SET | KW_UNSET | KW_TBLPROPERTIES | KW_IDXPROPERTIES | KW_VALUE_TYPE | KW_ELEM_TYPE | KW_MAPJOIN | KW_STREAMTABLE | KW_HOLD_DDLTIME | KW_CLUSTERSTATUS | KW_UTC | KW_UTCTIMESTAMP | KW_LONG | KW_DELETE | KW_PLUS | KW_MINUS | KW_FETCH | KW_INTERSECT | KW_VIEW | KW_IN | KW_DATABASES | KW_MATERIALIZED | KW_SCHEMA | KW_SCHEMAS | KW_GRANT | KW_REVOKE | KW_SSL | KW_UNDO | KW_LOCK | KW_LOCKS | KW_UNLOCK | KW_SHARED | KW_EXCLUSIVE | KW_PROCEDURE | KW_UNSIGNED | KW_WHILE | KW_READ | KW_READS | KW_PURGE | KW_RANGE | KW_ANALYZE | KW_BEFORE | KW_BETWEEN | KW_BOTH | KW_BINARY | KW_CONTINUE | KW_CURSOR | KW_TRIGGER | KW_RECORDREADER | KW_RECORDWRITER | KW_SEMI | KW_LATERAL | KW_TOUCH | KW_ARCHIVE | KW_UNARCHIVE | KW_COMPUTE | KW_STATISTICS | KW_USE | KW_OPTION | KW_CONCATENATE | KW_SHOW_DATABASE | KW_UPDATE | KW_RESTRICT | KW_CASCADE | KW_SKEWED | KW_ROLLUP | KW_CUBE | KW_DIRECTORIES | KW_FOR | KW_GROUPING | KW_SETS | KW_TRUNCATE | KW_NOSCAN | KW_USER | KW_ROLE | KW_INNER + KW_TRUE | KW_FALSE | KW_LIKE | KW_EXISTS | KW_ASC | KW_DESC | KW_ORDER | KW_GROUP | KW_BY | KW_AS | KW_INSERT | KW_OVERWRITE | KW_OUTER | KW_LEFT | KW_RIGHT | KW_FULL | KW_PARTITION | KW_PARTITIONS | KW_TABLE | KW_TABLES | KW_COLUMNS | KW_INDEX | KW_INDEXES | KW_REBUILD | KW_FUNCTIONS | KW_SHOW | KW_MSCK | KW_REPAIR | KW_DIRECTORY | KW_LOCAL | KW_USING | KW_CLUSTER | KW_DISTRIBUTE | KW_SORT | KW_UNION | KW_LOAD | KW_EXPORT | KW_IMPORT | KW_DATA | KW_INPATH | KW_IS | KW_NULL | KW_CREATE | KW_EXTERNAL | KW_ALTER | KW_CHANGE | KW_FIRST | KW_AFTER | KW_DESCRIBE | KW_DROP | KW_RENAME | KW_IGNORE | KW_PROTECTION | KW_TO | KW_COMMENT | KW_BOOLEAN | KW_TINYINT | KW_SMALLINT | KW_INT | KW_INTEGER | KW_BIGINT | KW_FLOAT | KW_REAL | KW_DOUBLE | KW_PRECISION | KW_DATE | KW_DATETIME | KW_TIMESTAMP | KW_DECIMAL | KW_NUMERIC | KW_STRING | KW_ARRAY | KW_STRUCT | KW_UNIONTYPE | KW_PARTITIONED | KW_CLUSTERED | KW_SORTED | KW_INTO | KW_BUCKETS | KW_ROW | KW_ROWS | KW_FORMAT | KW_DELIMITED | KW_FIELDS | KW_TERMINATED | KW_ESCAPED | KW_COLLECTION | KW_ITEMS | KW_KEYS | KW_KEY_TYPE | KW_LINES | KW_STORED | KW_FILEFORMAT | KW_SEQUENCEFILE | KW_TEXTFILE | KW_RCFILE | KW_ORCFILE | KW_INPUTFORMAT | KW_OUTPUTFORMAT | KW_INPUTDRIVER | KW_OUTPUTDRIVER | KW_OFFLINE | KW_ENABLE | KW_DISABLE | KW_READONLY | KW_NO_DROP | KW_LOCATION | KW_BUCKET | KW_OUT | KW_OF | KW_PERCENT | KW_ADD | KW_REPLACE | KW_RLIKE | KW_REGEXP | KW_TEMPORARY | KW_EXPLAIN | KW_FORMATTED | KW_PRETTY | KW_DEPENDENCY | KW_LOGICAL | KW_SERDE | KW_WITH | KW_DEFERRED | KW_SERDEPROPERTIES | KW_DBPROPERTIES | KW_LIMIT | KW_SET | KW_UNSET | KW_TBLPROPERTIES | KW_IDXPROPERTIES | KW_VALUE_TYPE | KW_ELEM_TYPE | KW_MAPJOIN | KW_STREAMTABLE | KW_HOLD_DDLTIME | KW_CLUSTERSTATUS | KW_UTC | KW_UTCTIMESTAMP | KW_LONG | KW_DELETE | KW_PLUS | KW_MINUS | KW_FETCH | KW_INTERSECT | KW_VIEW | KW_IN | KW_DATABASES | KW_MATERIALIZED | KW_SCHEMA | KW_SCHEMAS | KW_GRANT | KW_REVOKE | KW_SSL | KW_UNDO | KW_LOCK | KW_LOCKS | KW_UNLOCK | KW_SHARED | KW_EXCLUSIVE | KW_PROCEDURE | KW_UNSIGNED | KW_WHILE | KW_READ | KW_READS | KW_PURGE | KW_RANGE | KW_ANALYZE | KW_BEFORE | KW_BETWEEN | KW_BOTH | KW_BINARY | KW_CONTINUE | KW_CURSOR | KW_TRIGGER | KW_RECORDREADER | KW_RECORDWRITER | KW_SEMI | KW_LATERAL | KW_TOUCH | KW_ARCHIVE | KW_UNARCHIVE | KW_COMPUTE | KW_STATISTICS | KW_USE | KW_OPTION | KW_CONCATENATE | KW_SHOW_DATABASE | KW_UPDATE | KW_RESTRICT | KW_CASCADE | KW_SKEWED | KW_ROLLUP | KW_CUBE | KW_DIRECTORIES | KW_FOR | KW_GROUPING | KW_SETS | KW_TRUNCATE | KW_NOSCAN | KW_USER | KW_ROLE | KW_INNER | KW_BLOB | KW_CLOB | KW_CHARACTER | KW_LARGE | KW_OBJECT ; diff --git ql/src/test/queries/clientpositive/type_aliases.q ql/src/test/queries/clientpositive/type_aliases.q new file mode 100644 index 0000000..0aea83c --- /dev/null +++ ql/src/test/queries/clientpositive/type_aliases.q @@ -0,0 +1,42 @@ +drop table type_aliases; + +create table type_aliases ( + c1 integer, c2 numeric, c3 numeric(10,2), c4 double precision, c5 real, + c6 blob, c7 binary large object, c8 clob, c9 character large object +) partitioned by ( + p1 integer, p2 numeric, p3 numeric(10,2), p4 double precision, p5 real, + p6 blob, p7 binary large object, p8 clob, p9 character large object +); + +alter table type_aliases add columns ( + cc1 integer, cc2 numeric, cc3 numeric(10,2), cc4 double precision, cc5 real, + cc6 blob, cc7 binary large object, cc8 clob, cc9 character large object +); + +insert overwrite table type_aliases partition (p1=1, p2=1, p3=1, p4=1, p5=1, p6='1', p7='1', p8='1', p9='1') + select + -- c1 + cast(key as integer), + cast(key as numeric), + cast(key as numeric(10,2)), + cast(key as double precision), + cast(key as real), + cast(value as blob), + cast(value as binary large object), + cast(value as clob), + cast(value as character large object), + -- cc1 + integer(key), + cast(key as numeric), + cast(key as numeric(10,2)), + cast(key as double precision), + real(key), + cast(value as blob), + cast(value as binary large object), + cast(value as clob), + cast(value as character large object) + from src order by key limit 2; + +select * from type_aliases; + +drop table type_aliases; diff --git ql/src/test/results/clientpositive/type_aliases.q.out ql/src/test/results/clientpositive/type_aliases.q.out new file mode 100644 index 0000000..a5308db --- /dev/null +++ ql/src/test/results/clientpositive/type_aliases.q.out @@ -0,0 +1,161 @@ +PREHOOK: query: drop table type_aliases +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table type_aliases +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table type_aliases ( + c1 integer, c2 numeric, c3 numeric(10,2), c4 double precision, c5 real, + c6 blob, c7 binary large object, c8 clob, c9 character large object +) partitioned by ( + p1 integer, p2 numeric, p3 numeric(10,2), p4 double precision, p5 real, + p6 blob, p7 binary large object, p8 clob, p9 character large object +) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table type_aliases ( + c1 integer, c2 numeric, c3 numeric(10,2), c4 double precision, c5 real, + c6 blob, c7 binary large object, c8 clob, c9 character large object +) partitioned by ( + p1 integer, p2 numeric, p3 numeric(10,2), p4 double precision, p5 real, + p6 blob, p7 binary large object, p8 clob, p9 character large object +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@type_aliases +PREHOOK: query: alter table type_aliases add columns ( + cc1 integer, cc2 numeric, cc3 numeric(10,2), cc4 double precision, cc5 real, + cc6 blob, cc7 binary large object, cc8 clob, cc9 character large object +) +PREHOOK: type: ALTERTABLE_ADDCOLS +PREHOOK: Input: default@type_aliases +PREHOOK: Output: default@type_aliases +POSTHOOK: query: alter table type_aliases add columns ( + cc1 integer, cc2 numeric, cc3 numeric(10,2), cc4 double precision, cc5 real, + cc6 blob, cc7 binary large object, cc8 clob, cc9 character large object +) +POSTHOOK: type: ALTERTABLE_ADDCOLS +POSTHOOK: Input: default@type_aliases +POSTHOOK: Output: default@type_aliases +PREHOOK: query: insert overwrite table type_aliases partition (p1=1, p2=1, p3=1, p4=1, p5=1, p6='1', p7='1', p8='1', p9='1') + select + -- c1 + cast(key as integer), + cast(key as numeric), + cast(key as numeric(10,2)), + cast(key as double precision), + cast(key as real), + cast(value as blob), + cast(value as binary large object), + cast(value as clob), + cast(value as character large object), + -- cc1 + integer(key), + cast(key as numeric), + cast(key as numeric(10,2)), + cast(key as double precision), + real(key), + cast(value as blob), + cast(value as binary large object), + cast(value as clob), + cast(value as character large object) + from src order by key limit 2 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@type_aliases@p1=1/p2=1/p3=1/p4=1/p5=1/p6=1/p7=1/p8=1/p9=1 +POSTHOOK: query: insert overwrite table type_aliases partition (p1=1, p2=1, p3=1, p4=1, p5=1, p6='1', p7='1', p8='1', p9='1') + select + -- c1 + cast(key as integer), + cast(key as numeric), + cast(key as numeric(10,2)), + cast(key as double precision), + cast(key as real), + cast(value as blob), + cast(value as binary large object), + cast(value as clob), + cast(value as character large object), + -- cc1 + integer(key), + cast(key as numeric), + cast(key as numeric(10,2)), + cast(key as double precision), + real(key), + cast(value as blob), + cast(value as binary large object), + cast(value as clob), + cast(value as character large object) + from src order by key limit 2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@type_aliases@p1=1/p2=1/p3=1/p4=1/p5=1/p6=1/p7=1/p8=1/p9=1 +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c3 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c4 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c5 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c6 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c7 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c8 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c9 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc3 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc4 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc5 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc6 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc7 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc8 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc9 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select * from type_aliases +PREHOOK: type: QUERY +PREHOOK: Input: default@type_aliases +PREHOOK: Input: default@type_aliases@p1=1/p2=1/p3=1/p4=1/p5=1/p6=1/p7=1/p8=1/p9=1 +#### A masked pattern was here #### +POSTHOOK: query: select * from type_aliases +POSTHOOK: type: QUERY +POSTHOOK: Input: default@type_aliases +POSTHOOK: Input: default@type_aliases@p1=1/p2=1/p3=1/p4=1/p5=1/p6=1/p7=1/p8=1/p9=1 +#### A masked pattern was here #### +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c3 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c4 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c5 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c6 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c7 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c8 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c9 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc3 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc4 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc5 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc6 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc7 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc8 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc9 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +0 0 0 0.0 0.0 val_0 val_0 val_0 val_0 0 0 0 0.0 0.0 val_0 val_0 val_0 val_0 1 1 1 1 1 1 1 1 1 +0 0 0 0.0 0.0 val_0 val_0 val_0 val_0 0 0 0 0.0 0.0 val_0 val_0 val_0 val_0 1 1 1 1 1 1 1 1 1 +PREHOOK: query: drop table type_aliases +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@type_aliases +PREHOOK: Output: default@type_aliases +POSTHOOK: query: drop table type_aliases +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@type_aliases +POSTHOOK: Output: default@type_aliases +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c3 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c4 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c5 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c6 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c7 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c8 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).c9 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc1 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc2 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc3 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc4 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc5 EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc6 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc7 EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc8 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: type_aliases PARTITION(p1=1,p2=1,p3=1,p4=1,p5=1,p6=1,p7=1,p8=1,p9=1).cc9 SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]