diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java index 8321a66..88b2f0a 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java @@ -17,6 +17,7 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.MapWritable; +import org.apache.hadoop.io.ObjectWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.RecordReader; @@ -61,11 +62,11 @@ public boolean next(LongWritable key, MapWritable value) throws IOException { LOGGER.debug("JdbcRecordReader has more records to read."); key.set(pos); pos++; - Map record = iterator.next(); + Map record = iterator.next(); if ((record != null) && (!record.isEmpty())) { - for (Entry entry : record.entrySet()) { + for (Entry entry : record.entrySet()) { value.put(new Text(entry.getKey()), - entry.getValue() == null ? NullWritable.get() : new Text(entry.getValue())); + entry.getValue() == null ? NullWritable.get() : new ObjectWritable(entry.getValue())); } return true; } diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java index e785e9c..3764c8c 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java @@ -23,8 +23,11 @@ import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; +import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; +import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.MapWritable; +import org.apache.hadoop.io.ObjectWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.io.Writable; import org.slf4j.Logger; @@ -48,7 +51,7 @@ private int numColumns; private String[] hiveColumnTypeArray; private List columnNames; - private List row; + private List row; /* @@ -83,13 +86,15 @@ public void initialize(Configuration conf, Properties tbl) throws SerDeException List fieldInspectors = new ArrayList(numColumns); for (int i = 0; i < numColumns; i++) { - fieldInspectors.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); + PrimitiveTypeInfo ti = TypeInfoFactory.getPrimitiveTypeInfo(hiveColumnTypeArray[i]); + ObjectInspector oi = PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector(ti); + fieldInspectors.add(oi); } objectInspector = ObjectInspectorFactory.getStandardStructObjectInspector(hiveColumnNames, fieldInspectors); - row = new ArrayList(numColumns); + row = new ArrayList(numColumns); } } catch (Exception e) { @@ -126,12 +131,7 @@ public Object deserialize(Writable blob) throws SerDeException { for (int i = 0; i < numColumns; i++) { columnKey.set(columnNames.get(i)); Writable value = input.get(columnKey); - if (value == null || value instanceof NullWritable) { - row.add(null); - } - else { - row.add(value.toString()); - } + row.add(value instanceof NullWritable ? null : ((ObjectWritable)value).get()); } return row; diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JdbcRecordIterator.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JdbcRecordIterator.java index 8938766..638e2b0 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JdbcRecordIterator.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JdbcRecordIterator.java @@ -29,7 +29,7 @@ /** * An iterator that allows iterating through a SQL resultset. Includes methods to clear up resources. */ -public class JdbcRecordIterator implements Iterator> { +public class JdbcRecordIterator implements Iterator> { private static final Logger LOGGER = LoggerFactory.getLogger(JdbcRecordIterator.class); @@ -58,14 +58,14 @@ public boolean hasNext() { @Override - public Map next() { + public Map next() { try { ResultSetMetaData metadata = rs.getMetaData(); int numColumns = metadata.getColumnCount(); - Map record = new HashMap(numColumns); + Map record = new HashMap(numColumns); for (int i = 0; i < numColumns; i++) { String key = metadata.getColumnName(i + 1); - String value = rs.getString(i + 1); + Object value = rs.getObject(i + 1); record.put(key, value); } diff --git jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessorTest.java jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessorTest.java index 5fd600b..b2442e8a 100644 --- jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessorTest.java +++ jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessorTest.java @@ -118,12 +118,12 @@ public void testGetRecordIterator() throws HiveJdbcDatabaseAccessException { int count = 0; while (iterator.hasNext()) { - Map record = iterator.next(); + Map record = iterator.next(); count++; assertThat(record, is(notNullValue())); assertThat(record.size(), is(equalTo(7))); - assertThat(record.get("STRATEGY_ID"), is(equalTo(String.valueOf(count)))); + assertThat(record.get("STRATEGY_ID"), is(equalTo(count))); } assertThat(count, is(equalTo(2))); @@ -141,12 +141,12 @@ public void testGetRecordIterator_offsets() throws HiveJdbcDatabaseAccessExcepti int count = 0; while (iterator.hasNext()) { - Map record = iterator.next(); + Map record = iterator.next(); count++; assertThat(record, is(notNullValue())); assertThat(record.size(), is(equalTo(7))); - assertThat(record.get("STRATEGY_ID"), is(equalTo(String.valueOf(count + 2)))); + assertThat(record.get("STRATEGY_ID"), is(equalTo(count + 2))); } assertThat(count, is(equalTo(2))); diff --git ql/src/test/queries/clientpositive/jdbc_handler.q ql/src/test/queries/clientpositive/jdbc_handler.q index 847f577..7e21550 100644 --- ql/src/test/queries/clientpositive/jdbc_handler.q +++ ql/src/test/queries/clientpositive/jdbc_handler.q @@ -1,8 +1,9 @@ + set hive.strict.checks.cartesian.product= false; CREATE EXTERNAL TABLE tables ( -id int, -db_id int, +id bigint, +db_id bigint, name STRING, type STRING, owner STRING @@ -16,7 +17,7 @@ TBLPROPERTIES ( CREATE EXTERNAL TABLE dbs ( -DB_ID int, +DB_ID bigint, NAME STRING ) STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' diff --git ql/src/test/queries/clientpositive/sysdb.q ql/src/test/queries/clientpositive/sysdb.q index d94a164..9c9d6be 100644 --- ql/src/test/queries/clientpositive/sysdb.q +++ ql/src/test/queries/clientpositive/sysdb.q @@ -108,10 +108,16 @@ select count(*) from SCHEMATA; select * from TABLES order by TABLE_SCHEMA, TABLE_NAME; -select * from TABLE_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME limit 10; +select * from TABLE_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME, PRIVILEGE_TYPE limit 10; select * from COLUMNS where TABLE_NAME = 'alltypesorc' or TABLE_NAME = 'moretypes' order by TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION ; select * from COLUMN_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME limit 10; select TABLE_SCHEMA, TABLE_NAME from views order by TABLE_SCHEMA, TABLE_NAME; + +describe sys.tab_col_stats; + +explain select max(num_distincts) from sys.tab_col_stats; + +select max(num_distincts) from sys.tab_col_stats; diff --git ql/src/test/results/clientpositive/llap/jdbc_handler.q.out ql/src/test/results/clientpositive/llap/jdbc_handler.q.out index 7c428e8..b4feb0e 100644 --- ql/src/test/results/clientpositive/llap/jdbc_handler.q.out +++ ql/src/test/results/clientpositive/llap/jdbc_handler.q.out @@ -1,7 +1,7 @@ PREHOOK: query: CREATE EXTERNAL TABLE tables ( -id int, -db_id int, +id bigint, +db_id bigint, name STRING, type STRING, #### A masked pattern was here #### @@ -17,8 +17,8 @@ PREHOOK: Output: database:default PREHOOK: Output: default@tables POSTHOOK: query: CREATE EXTERNAL TABLE tables ( -id int, -db_id int, +id bigint, +db_id bigint, name STRING, type STRING, #### A masked pattern was here #### @@ -34,7 +34,7 @@ POSTHOOK: Output: database:default POSTHOOK: Output: default@tables PREHOOK: query: CREATE EXTERNAL TABLE dbs ( -DB_ID int, +DB_ID bigint, NAME STRING ) STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' @@ -47,7 +47,7 @@ PREHOOK: Output: database:default PREHOOK: Output: default@dbs POSTHOOK: query: CREATE EXTERNAL TABLE dbs ( -DB_ID int, +DB_ID bigint, NAME STRING ) STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' @@ -276,8 +276,8 @@ PREHOOK: Input: default@tables POSTHOOK: query: describe tables POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@tables -id string from deserializer -db_id string from deserializer +id bigint from deserializer +db_id bigint from deserializer name string from deserializer type string from deserializer #### A masked pattern was here #### diff --git ql/src/test/results/clientpositive/llap/sysdb.q.out ql/src/test/results/clientpositive/llap/sysdb.q.out index 64b97ee..f360c65 100644 --- ql/src/test/results/clientpositive/llap/sysdb.q.out +++ ql/src/test/results/clientpositive/llap/sysdb.q.out @@ -2334,7 +2334,7 @@ POSTHOOK: Output: INFORMATION_SCHEMA@TABLE_PRIVILEGES POSTHOOK: Output: database:information_schema POSTHOOK: Lineage: TABLE_PRIVILEGES.grantee SIMPLE [(tbl_privs)p.FieldSchema(name:principal_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: TABLE_PRIVILEGES.grantor SIMPLE [(tbl_privs)p.FieldSchema(name:grantor, type:string, comment:from deserializer), ] -POSTHOOK: Lineage: TABLE_PRIVILEGES.is_grantable EXPRESSION [(tbl_privs)p.FieldSchema(name:grant_option, type:string, comment:from deserializer), ] +POSTHOOK: Lineage: TABLE_PRIVILEGES.is_grantable EXPRESSION [(tbl_privs)p.FieldSchema(name:grant_option, type:int, comment:from deserializer), ] POSTHOOK: Lineage: TABLE_PRIVILEGES.privilege_type SIMPLE [(tbl_privs)p.FieldSchema(name:tbl_priv, type:string, comment:from deserializer), ] POSTHOOK: Lineage: TABLE_PRIVILEGES.table_catalog SIMPLE [] POSTHOOK: Lineage: TABLE_PRIVILEGES.table_name SIMPLE [(tbls)t.FieldSchema(name:tbl_name, type:string, comment:from deserializer), ] @@ -2663,7 +2663,7 @@ POSTHOOK: Lineage: COLUMNS.datetime_precision EXPRESSION [(columns_v2)c.FieldSch POSTHOOK: Lineage: COLUMNS.declared_data_type SIMPLE [(columns_v2)c.FieldSchema(name:type_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMNS.declared_numeric_precision EXPRESSION [(columns_v2)c.FieldSchema(name:type_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMNS.declared_numeric_scale EXPRESSION [(columns_v2)c.FieldSchema(name:type_name, type:string, comment:from deserializer), ] -POSTHOOK: Lineage: COLUMNS.dtd_identifier SIMPLE [(columns_v2)c.FieldSchema(name:cd_id, type:string, comment:from deserializer), ] +POSTHOOK: Lineage: COLUMNS.dtd_identifier SIMPLE [(columns_v2)c.FieldSchema(name:cd_id, type:bigint, comment:from deserializer), ] POSTHOOK: Lineage: COLUMNS.generation_expression EXPRESSION [] POSTHOOK: Lineage: COLUMNS.identity_cycle EXPRESSION [] POSTHOOK: Lineage: COLUMNS.identity_generation EXPRESSION [] @@ -2684,7 +2684,7 @@ POSTHOOK: Lineage: COLUMNS.maximum_cardinality EXPRESSION [] POSTHOOK: Lineage: COLUMNS.numeric_precision EXPRESSION [(columns_v2)c.FieldSchema(name:type_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMNS.numeric_precision_radix EXPRESSION [(columns_v2)c.FieldSchema(name:type_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMNS.numeric_scale EXPRESSION [(columns_v2)c.FieldSchema(name:type_name, type:string, comment:from deserializer), ] -POSTHOOK: Lineage: COLUMNS.ordinal_position SIMPLE [(columns_v2)c.FieldSchema(name:integer_idx, type:string, comment:from deserializer), ] +POSTHOOK: Lineage: COLUMNS.ordinal_position SIMPLE [(columns_v2)c.FieldSchema(name:integer_idx, type:int, comment:from deserializer), ] POSTHOOK: Lineage: COLUMNS.scope_catalog EXPRESSION [] POSTHOOK: Lineage: COLUMNS.scope_name EXPRESSION [] POSTHOOK: Lineage: COLUMNS.scope_schema EXPRESSION [] @@ -2778,7 +2778,7 @@ POSTHOOK: Output: database:information_schema POSTHOOK: Lineage: COLUMN_PRIVILEGES.column_name SIMPLE [(columns_v2)c.FieldSchema(name:column_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMN_PRIVILEGES.grantee SIMPLE [(tbl_col_privs)p.FieldSchema(name:principal_name, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMN_PRIVILEGES.grantor SIMPLE [(tbl_col_privs)p.FieldSchema(name:grantor, type:string, comment:from deserializer), ] -POSTHOOK: Lineage: COLUMN_PRIVILEGES.is_grantable EXPRESSION [(tbl_col_privs)p.FieldSchema(name:grant_option, type:string, comment:from deserializer), ] +POSTHOOK: Lineage: COLUMN_PRIVILEGES.is_grantable EXPRESSION [(tbl_col_privs)p.FieldSchema(name:grant_option, type:int, comment:from deserializer), ] POSTHOOK: Lineage: COLUMN_PRIVILEGES.privilege_type SIMPLE [(tbl_col_privs)p.FieldSchema(name:tbl_col_priv, type:string, comment:from deserializer), ] POSTHOOK: Lineage: COLUMN_PRIVILEGES.table_catalog SIMPLE [] POSTHOOK: Lineage: COLUMN_PRIVILEGES.table_name SIMPLE [(tbls)t.FieldSchema(name:tbl_name, type:string, comment:from deserializer), ] @@ -3350,14 +3350,14 @@ default sys tbl_col_privs BASE_TABLE NULL NULL NULL NULL NULL YES NO NULL default sys tbl_privs BASE_TABLE NULL NULL NULL NULL NULL YES NO NULL default sys tbls BASE_TABLE NULL NULL NULL NULL NULL YES NO NULL default sys version BASE_TABLE NULL NULL NULL NULL NULL YES NO NULL -PREHOOK: query: select * from TABLE_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME limit 10 +PREHOOK: query: select * from TABLE_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME, PRIVILEGE_TYPE limit 10 PREHOOK: type: QUERY PREHOOK: Input: information_schema@table_privileges PREHOOK: Input: sys@dbs PREHOOK: Input: sys@tbl_privs PREHOOK: Input: sys@tbls #### A masked pattern was here #### -POSTHOOK: query: select * from TABLE_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME limit 10 +POSTHOOK: query: select * from TABLE_PRIVILEGES order by GRANTOR, GRANTEE, TABLE_SCHEMA, TABLE_NAME, PRIVILEGE_TYPE limit 10 POSTHOOK: type: QUERY POSTHOOK: Input: information_schema@table_privileges POSTHOOK: Input: sys@dbs @@ -3368,12 +3368,12 @@ hive_test_user hive_test_user default default alltypesorc DELETE YES NO hive_test_user hive_test_user default default alltypesorc INSERT YES NO hive_test_user hive_test_user default default alltypesorc SELECT YES NO hive_test_user hive_test_user default default alltypesorc UPDATE YES NO +hive_test_user hive_test_user default default cbo_t1 DELETE YES NO +hive_test_user hive_test_user default default cbo_t1 INSERT YES NO hive_test_user hive_test_user default default cbo_t1 SELECT YES NO hive_test_user hive_test_user default default cbo_t1 UPDATE YES NO -hive_test_user hive_test_user default default cbo_t1 INSERT YES NO -hive_test_user hive_test_user default default cbo_t1 DELETE YES NO -hive_test_user hive_test_user default default cbo_t2 UPDATE YES NO -hive_test_user hive_test_user default default cbo_t2 SELECT YES NO +hive_test_user hive_test_user default default cbo_t2 DELETE YES NO +hive_test_user hive_test_user default default cbo_t2 INSERT YES NO PREHOOK: query: select * from COLUMNS where TABLE_NAME = 'alltypesorc' or TABLE_NAME = 'moretypes' order by TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION PREHOOK: type: QUERY PREHOOK: Input: information_schema@columns @@ -3392,8 +3392,6 @@ POSTHOOK: Input: sys@tbls #### A masked pattern was here #### default default alltypesorc ctinyint 0 NULL YES tinyint NULL NULL 3 10 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES tinyint 3 10 default default alltypesorc csmallint 1 NULL YES smallint NULL NULL 5 10 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES smallint 5 10 -default default alltypesorc cboolean1 10 NULL YES boolean NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES boolean NULL NULL -default default alltypesorc cboolean2 11 NULL YES boolean NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES boolean NULL NULL default default alltypesorc cint 2 NULL YES int NULL NULL 10 10 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES int 10 10 default default alltypesorc cbigint 3 NULL YES bigint NULL NULL 19 10 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES bigint 19 10 default default alltypesorc cfloat 4 NULL YES float NULL NULL 23 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES float 23 2 @@ -3402,6 +3400,8 @@ default default alltypesorc cstring1 6 NULL YES string NULL NULL NULL NULL NULL default default alltypesorc cstring2 7 NULL YES string NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES string NULL NULL default default alltypesorc ctimestamp1 8 NULL YES timestamp NULL NULL NULL NULL NULL 9 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES timestamp NULL NULL default default alltypesorc ctimestamp2 9 NULL YES timestamp NULL NULL NULL NULL NULL 9 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES timestamp NULL NULL +default default alltypesorc cboolean1 10 NULL YES boolean NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES boolean NULL NULL +default default alltypesorc cboolean2 11 NULL YES boolean NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 11 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES boolean NULL NULL default default moretypes a 0 NULL YES decimal(10,2) NULL NULL 10 10 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 27 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES decimal(10,2) 10 10 default default moretypes b 1 NULL YES tinyint NULL NULL 3 10 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 27 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES tinyint 3 10 default default moretypes c 2 NULL YES smallint NULL NULL 5 10 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 27 NO NO NULL NULL NULL NULL NULL NULL NEVER NULL NO NO NULL YES smallint 5 10 @@ -3445,3 +3445,95 @@ information_schema schemata information_schema table_privileges information_schema tables information_schema views +PREHOOK: query: describe sys.tab_col_stats +PREHOOK: type: DESCTABLE +PREHOOK: Input: sys@tab_col_stats +POSTHOOK: query: describe sys.tab_col_stats +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: sys@tab_col_stats +cs_id bigint from deserializer +db_name string from deserializer +table_name string from deserializer +column_name string from deserializer +column_type string from deserializer +tbl_id bigint from deserializer +long_low_value bigint from deserializer +long_high_value bigint from deserializer +double_high_value double from deserializer +double_low_value double from deserializer +big_decimal_low_value string from deserializer +big_decimal_high_value string from deserializer +num_nulls bigint from deserializer +num_distincts bigint from deserializer +avg_col_len double from deserializer +max_col_len bigint from deserializer +num_trues bigint from deserializer +num_falses bigint from deserializer +last_analyzed bigint from deserializer +PREHOOK: query: explain select max(num_distincts) from sys.tab_col_stats +PREHOOK: type: QUERY +POSTHOOK: query: explain select max(num_distincts) from sys.tab_col_stats +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Tez +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: tab_col_stats + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: num_distincts (type: bigint) + outputColumnNames: num_distincts + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Group By Operator + aggregations: max(num_distincts) + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: bigint) + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Group By Operator + aggregations: max(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select max(num_distincts) from sys.tab_col_stats +PREHOOK: type: QUERY +PREHOOK: Input: sys@tab_col_stats +#### A masked pattern was here #### +POSTHOOK: query: select max(num_distincts) from sys.tab_col_stats +POSTHOOK: type: QUERY +POSTHOOK: Input: sys@tab_col_stats +#### A masked pattern was here #### +7488